5分のJAVAコードが教えてくれる:FFmpegはビデオトライアルを実現します(Centos7バージョン)

1.ビジネスシナリオ

   知識に対する支払いの時代の到来により、オンライン学習プラットフォームが立ち上がっており、あらゆる規模の企業がオンライン学習プラットフォームを開発しているため、次のニーズが発生します:コース動画デモ機能

Windows版についてはこちらをクリックしてください:
5分のコードが教えてくれます:JAVAがビデオデモ機能を実現します(ウィンドウ版)

PS:(このブログで使用されているコード、ffmpegインストールパッケージ、およびcmdコマンドラインツールは、ダウンロードして参照できるように、パッケージ化されて↓↓↓↓の添付ファイルに配置されます。)

FFmpegDemoをダウンロードするにはクリックしてください
ここに画像の説明を挿入

2.実装のアイデア

プラットフォームユーザーが自分のコースをアップロードした後、サーバーはコースビデオの短いセグメントをインターセプトして保存します(たとえば、ビデオコンテンツの最初の30秒をトライアルコンテンツとしてインターセプトします)。したがって、ユーザーが動画をアップロードした後、サーバーでの処理後に2つの動画(1.元の動画2.試用動画)が生成されます。通常のユーザーはビデオにアクセスして試用ビデオを再生し、有料ユーザーはビデオにアクセスして元のビデオを再生します。

3. FFmpegオープンソースフレームワークの概要

ここでは、Javaを使用してFFmpegを呼び出してビデオとオーディオを処理します。これは、システムにFFmpegを手動でインストールし、呼び出すコマンドを実行することによって実装されます。

FFmpeg公式ウェブサイト:http : //ffmpeg.org/
(FFmpeg Readme:ビデオとオーディオの変換がとても簡単になりました!)

4. Centos7環境の実装

4.1公式ウェブサイトからLinuxをダウンロードしてアップロードする

以下に示すように、http://ffmpeg.org/download.html#releasesからLinuxバージョンの圧縮パッケージffmpeg-4.2.4.tar.bz2をダウンロードします。
ここに画像の説明を挿入

ツールを使用して、ダウンロードしたFFmpeg圧縮パッケージをLinuxにアップロードします。ここでは、SecureCRTを使用してアップロードします。
ここに画像の説明を挿入

4.2解凍してインストールする

1.下図に示すように、インストールディレクトリ/ usr / ffmpegを入力します。
ここに画像の説明を挿入
圧縮パッケージを解凍し、下図に示すようにエラーが報告された場合はtar -jxvf ffmpeg-4.2.4.tar.bz2を使用します
ここに画像の説明を挿入
。2.上図に問題がある場合は、bzip2をインストールすると
プロンプトが表示されます:Bzip2:実行できません:そのようなファイルまたはディレクトリはありません。
理由:bzip2パッケージをインストールする必要があります。
解決策:yum install -y bzip2
ここに画像の説明を挿入
3.インストールが成功したら、以下に示すように、tar -jxvf ffmpeg-4.2.4.tar.bz2を正常に実行できます。
ここに画像の説明を挿入
4.次の図に示すように、解凍ディレクトリを入力してyasmをインストールします。
ここに画像の説明を挿入
プロンプトが表示されたら、次の図に示すように「y」を選択します
ここに画像の説明を挿入
。5.インストール後にコマンドを実行します。

./configure --enable-shared --prefix=/usr/ffmpeg

ここに画像の説明を挿入
6.ここで30分待機したmakeコマンドを実行します(辛抱強く待ってください
ここに画像の説明を挿入
7.図
ここに画像の説明を挿入
8に示すように、make installコマンドを実行します(インストール)。/etc / ld.so.confファイルを変更します。

[root@vmsp ffmpeg-4.2.4]# vi /etc/ld.so.conf

以下に示すように、/ usr / ffmpeg / lib /を追加し
ここに画像の説明を挿入
ます。9. ldconfigを実行して有効にします。

[root@vmsp ffmpeg-4.2.4]# ldconfig

10.環境変数を設定する

vi / etc / profileコマンドを使用してプロファイルファイルを開き、ファイルの最後に環境変数を追加します。

PATH=$PATH:/usr/ffmpeg/bin
export PATH

source / etc / profileを実行して有効にします
ここに画像の説明を挿入
11.設定が成功したかどうかを確認します
ここに画像の説明を挿入

4.2 Javaがffmpegビデオのスクリーンショットを呼び出す

ここではデモを提供します。それをツールメソッドにカプセル化し、プロジェクトで呼び出すことができます。

/**
 * @Author : zhangS
 * @Date :2020-08-18
 */
public class ExeclLinuxCMD {
    
    

    /**
     * 根据名称截取目标视频,生成试看视频
     * @param timeLength 截取时长
     * @param oldVideoName 原视频名
     * @param newVideoName 试看视频名称
     * @return
     */
    public static Object exec(Integer timeLength,String oldVideoName,String newVideoName) {
    
    
        String cmd = "ffmpeg -ss 0:0:0 -t 0:0:"+timeLength+" -i  /usr/ffmpeg/"+oldVideoName+" -vcodec copy -acodec copy /usr/ffmpeg/"+newVideoName;
        try {
    
    
            String[] cmdA = {
    
     "/bin/sh", "-c", cmd };
            Process process = Runtime.getRuntime().exec(cmdA);
            LineNumberReader br = new LineNumberReader(new InputStreamReader(
                    process.getInputStream()));
            StringBuffer sb = new StringBuffer();
            String line;
            while ((line = br.readLine()) != null) {
    
    
                System.out.println(line);
                sb.append(line).append("\n");
            }
            return sb.toString();
        } catch (Exception e) {
    
    
            e.printStackTrace();
        }
        return null;
    }
    
    public static void main(String[] args) {
    
    
        //String netsString = exec("netstat -nat|grep -i 80").toString();
        exec(50,"test.mp4","test2.mp4");
        System.out.println("==========execute success=============");


    }


}

4.3エフェクト表示

ユーザーがビデオをアップロードした後、サーバーは、次に示すように、ffmpegを呼び出してビデオをインターセプトすることにより、トライアルビデオを生成します。
ここに画像の説明を挿入

4.4プロジェクトへの統合

ユーザーはバックグラウンドでビデオをアップロードし、FFmpegで2つのコピーを生成します。このページでは、ユーザーのビジネス上の判断を行い、対応するビデオを再生するだけです。

デモ動画を
ここに画像の説明を挿入
再生:動画全体を再生:
ここに画像の説明を挿入

5.テクニカルポイント分析

このブログは、主にビデオ試用機能のデム編集用ですが、ビデオ試用の開発シーンに遭遇した際に参考にできるソリューションを他の開発者が利用できるウィンドウズ下でのビデオ傍受操作も提供します。
FFmpegフレームワークには他にも多くのストリーミングメディア処理関数がありますが、ここではビデオインターセプトメソッドの実装に焦点を当てます。このブログは、FFmpegをシステムに手動でインストールし、Javaでコマンドラインを直接実行することで実装されています。

おすすめ

転載: blog.csdn.net/u010312671/article/details/108113720