オーディオおよびビデオ分野の強力な補助ツール - ffmpeg の一般的な操作の紹介

オーディオおよびビデオ分野の強力な補助ツール - ffmpeg の一般的な操作の紹介


フロントエンド時代は、他の形式のビデオやオーディオはないか、といつも尋ねられ、有料で入手することをいとわなかったのですが、ffmpeg に慣れていれば、それほど面倒ではありませんでした。ストリーミング メディアの分野で開発や研究によく従事している人にとって、ffmpeg は最も一般的に使用されるストリーミング メディア ツールであるはずです。多くのストリーミング メディア ソフトウェアは、ffmpeg ライブラリまたはツール プログラムを直接統合し、そのプロトコル アクセス、プロトコル変換を直接使用します。カプセル化、ストリーミング メディアのエンコードとデコード、およびその他の機能またはライブラリは、対応する機能を実装します。この記事では、主にストリーミング メディアの開発やデバッグのプロセスでよく使用される ffmpeg コマンドの使用方法と、そのコマンドと使用シナリオを紹介します。後で使用する場合は、この記事の関連コンテンツを直接問い合わせることができます。関連するテスト音声およびビデオ ファイルは、 公開アカウント Yi Ling Cang をフォローし、 ビデオ ストリーム分析 を送信することで取得 できます。

1 ffmpeg のインストールと展開

詳細には触れずに、公式 Web サイトにアクセスし、オペレーティング システムを選択し、ダウンロードしてインストールするだけです。公式サイトのアドレスは以下の通りです: https:
//ffmpeg.org/

ソース コードをダウンロードして自分でコンパイルすることもできます。

インストール パッケージによるインストール後、関連する実行パスがシステム環境変数に自動的に追加されます。自分で追加する必要はありません。cmd で直接実行できます。バージョン情報が返されれば、インストールは成功です
ffmeg -version

2 ffmpeg コマンド形式の概要

コマンド形式:

ffmpeg -i [输入文件名/地址] [参数选项] -f [格式] [输出文件/地址]

パラメータの説明:

  1. -i の後にはメディア ストリームの入力があり、ファイルまたはビデオ ストリーム アドレスを指定できます。
  2. [パラメータオプション] ストリーミングメディア変換のパラメータを定義し、変換方法を詳細に定義します
  3. -f の後には出力メディア ストリーム形式が続き、出力メディア ストリームの出力形式を定義します。
  4. 次に、出力メディアをファイルまたはプッシュ アドレスに直接ストリーミングします。

例:ffmpeg -i test.h264 -vcodec copy -f mpegts test.ts
パラメーター -i の後には、H264 ネイキッド ストリーム ファイル test.h264 であるストリーミング メディアの入力が続きます。パラメーター選択 -vcodec copy は、ビデオのエンコード形式がストリーミング メディア ソースの形式であることを示します。つまり、H264 のままです。-f mpegts は、出力ストリーミング メディアが ts であることを示します。test.ts は、出力のターゲット ファイル名を表します。

ffmpeg で変換の役割を果たす [パラメータ オプション] は、出力メディア ストリームの出力モード、エンコード タイプ、メディア タイプなどの実際のニーズに応じて設定できます。これは、ストリーミング用のパラメータ設定も実装する場所です。メディアのトランスコーディングです。ここでは概要を示します。一般的に使用されるパラメータの説明は以下のとおりです。

  • -vcodec ビデオ エンコード タイプ。入力 (コピー) と一致させることも、次のような他の形式にトランスコードすることもできます。

2 ffmpeg はストリーミング メディアのトランスコーディングを実装します

オーディオやビデオのファイル タイプを変換するために、インターネット上で多くのオフラインまたはオンライン ツールが共有されているのをよく見かけますが、ffmpeg でサポートされているファイル カプセル化プロトコルは非常に包括的であるため、これは基本的に ffmpeg ライブラリを使用するか、ffmpeg プログラムを直接カプセル化することによって実現されます。コーデック ライブラリでサポートされているビデオ エンコーディング タイプも非常に包括的です。C ベースで書かれているため、プログラム/ライブラリ全体も非常に小さく、安定していて効率的です。このタイプのオープン ソース ソフトウェアで広く使用されています。以下は音声から動画ファイル形式変換、音声と動画のトランスコーディングなどを紹介します。

2.1 オーディオおよびビデオファイル形式の変換

2.2 ネットワーク ストリーミング ストリームとストリーミング メディア ファイル間の変換

ネットワーク ストリーミング ファイル変換は、RTSP、RTMP、HLS およびその他の一般的に使用されるネットワーク ストリーミング プロトコルをサポートしています。ファイル形式は、一般的に使用されているオーディオおよびビデオ ファイル形式をサポートしています。もっと試すことができます。ここでは、例として RTSP から mp4 への変換を取り上げます。コマンドは次のとおりです以下に続きます:

ffmpeg -i "rtsp://admin:[email protected]:554/Streaming/Channels/101?transportmode=unicast&profile=Profile_1" -c:v copy -c:a copy  -f mp4 -movflags frag_keyframe output_test.mp4
  • 入力は rtsp リアルタイム ストリームです: rtsp://admin:[email protected]:554/Streaming/Channels/101?transportmode=unicast&profile=Profile_1
  • 変換されたオーディオ エンコーディングとビデオ エンコーディングは変更されません: -c:v copy -c:a copy
  • 出力形式は断片化された mp4 形式です: -f mp4 -movflags frag_keyframe
  • 出力ファイル名:output_test.mp4

もちろん、ストリーミング メディア ファイルをネットワーク ストリーミング形式に変換して出力することもできます。ここでは、ループ再生を通じて mp4 ファイルを rtsp ストリーミングに変換する例を説明します。

関連サンプルファイルは、公式アカウントをフォローし、動画ストリーム解析を送信して入手してください。

2.3 ファイルのカプセル化形式の変換

ファイルのカプセル化形式を変換するだけであれば、非常に簡単です。たとえば、mp4 を avi に変換するには、次のコマンドを使用できます。
ffmpeg -i output_test.mp4 output.avi

上記は、次のコマンドと同様に、オーディオとビデオのエンコード情報を変更せずに、ファイルのカプセル化形式を直接変換します。
ffmpeg -i output_test.mp4 -c:v copy -c:a copy output.avi

現在 ffmpeg でサポートされている一般的に使用されるオーディオおよびビデオ ファイル形式は次のとおりです。

  • ビデオ形式: MP4、AVI、MKV、MOV、FLV、WMV など。
  • オーディオ形式: MP3、WAV、AAC、FLAC、OGG など。
  • 画像形式:JPEG、PNG、GIF、BMPなど
  • ストリーミング メディア プロトコル: RTMP、HLS、HTTP、RTSP など。

2.4 ファイルエンコード形式の変換

オーディオおよびビデオのファイル形式を変換するときにオーディオおよびビデオのエンコード情報を変更する必要がある場合は、パラメータ オプションを追加して、出力オーディオおよびビデオのエンコード形式を定義できます。
ffmpeg -i input_h264.mp4 -c:v libx265 -crf 28 output_h265.mp4

入力ビデオ エンコード タイプは H264、出力ビデオ エンコード タイプは H265、オーディオ エンコード タイプは変更されません。-crf はコード レート制御モードで、値が大きいほど品質が低下します。

ffmpeg は多くのエンコード形式をサポートしており、サポートされている限り、パラメータ オプションを通じて変換したり、次のコマンドを通じてffmpeg -codecsクエリしたりできます。

より多くのトランスコーディング方法を自分で調べてください。一般的に使用されるビデオ エンコード形式は以下のとおりです。c:v パラメーターで使用される列挙値は次のとおりです。

  • libx264: H.264 エンコーダー。ビデオの圧縮と送信に広く使用されています。
  • libx265: H.265 (HEVC) エンコーダー。より高い圧縮効率と優れたビデオ品質を提供します。
  • libvpx: WebM 形式の VP8 および VP9 エンコーダー。
  • libtheora: Ogg フォーマット用の Theora エンコーダー。
  • mpeg4: MPEG-4 Part 2 エンコーダー。古いビデオ エンコーディングで一般的に使用されます。
  • msmpeg4: 古い Windows プラットフォーム用の Microsoft MPEG-4 バージョン 3 エンコーダー。

ffmpeg で一般的に使用されるオーディオ エンコード形式、-c:a パラメーターの列挙値、一般的に使用されるものは次のとおりです。
-c:a パラメーター FFmpeg でオーディオ コーデックを指定するために使用される一般的な列挙値。

  • aac: 高度なオーディオ コーディング。通常は高品質のオーディオ圧縮に使用されます。
  • mp3: MPEG Audio Layer 3、オーディオの圧縮に使用される一般的に使用されるオーディオ コーデック。
  • opus: Opus は、さまざまなアプリケーションに適した多用途で効率的なオーディオ コーデックです。
  • vorbis: Vorbis、Ogg フォーマットで一般的に使用されるオープンソースのオーディオ コーデック。
  • pcm_s16le: PCM 署名付き 16 ビット リトル エンディアン フォーマット、ロスレス非圧縮オーディオ フォーマット。
  • pcm_mulaw: パルス符号変調 (PCM) の μ-law エンコーディングを表すオーディオ コーデックです。電話システムや一部の従来のオーディオ形式でのオーディオ圧縮に使用されます。
  • flac: ロスレス オーディオ コーデック。ロスレス オーディオ圧縮に使用されます。
  • ac3: オーディオ コーデック 3。DVD および Blu-ray ディスクのサラウンド サウンド オーディオに一般的に使用されます。

一部の読者から、G711U オーディオがあるかどうか尋ねられましたが、実際、aac をお持ちの場合は、次のコマンドで直接変換できます。
ffmpeg -i input.aac -c:a pcm_mulaw outg711u.wav

2.5 ファイル混合形式の変換

ストリーミング メディア システムを開発する場合、HLS、RTSP、RTMP などの外部ストリーミング メディア アクセス機能を提供するために、ストリーミング メディア サービスをシミュレートする必要があることがよくあります。例として MP4 ファイルをループして rtmp ストリームをプッシュすると、コマンドは次のようになります。このコマンドを使用してビデオ
ffmpeg -re -stream_loop -1 -i .\input_h264.mp4 -vcodec copy -codec copy -f flv rtmp://localhost/live/test
ファイルをシミュレートします。RTMP ストリームは RTMP サーバーにプッシュされ、OBS や EasyDarwin などのツールと組み合わせることで、RTMP および RTSP ストリーミング メディア サーバーをシミュレートし、RTSP および RTMP 機能を提供できます。
mp4 シミュレーション RTSP ストリームについては、https: //blog.csdn.net/qq_30714157/article/details/118732111を参照してください。

3 ffmepg はストリーミング メディア プロトコル変換を実装します

ストリーミング メディア サービス、特にライブ ブロードキャストの分野では、さまざまなストリーミング メディア プロトコルの変換に遭遇することがよくありますが、ffmpeg をうまく活用すれば、高品質な変換アプレットをすばやく作成できます。例として RTSP から HLS へ ffmpeg 経由 コマンドの変換は次のとおりです。

ffmpeg -i rtsp://admin:zxm10***@10.45.12.112/h264/ch1/main/av_stream -c copy -f hls -segment_list_flags +live -hls_time 10 -segment_list_size 6  /tmp/hls/hls.m3u8

上記のコマンドにより、RTSP ストリームを rtsp://admin:zxm10***@10.45.12.112/h264/ch1/main/av_stream から取得し、HLS スライスの形式でディレクトリ /tmp/hls に出力できます。どこ:

  • -i: rtsp://input_stream_url を、変換する実際の RTSP ストリームの URL に置き換えます。
  • -c copy: -c:v copy および -c:a copy オプションと同等で、再エンコードせずにビデオとオーディオ ストリームをコピーし、元の品質を維持します。
  • -hls_time 10 セグメントの継続時間を秒単位で指定します。必要に応じてこの値を調整できます。
  • -hls_list_size 6 プレイリストに保持されるクリップの数を決定します。必要に応じてこの値を変更できます。
  • -f hls は、出力形式を HLS に設定します。
  • hls.m3u8 は出力 HLS プレイリスト ファイルです。

nginx と組み合わせることで、HLS ストリーミング メディア サービスを実装できます。記事はhttps://blog.csdn.net/water1209/article/details/128664784を参照してください。

4 ffmpegの使い方のまとめ

上記は ffmpeg でよく使用されるコマンドの一部です。ffmpeg は非常に強力なツールで、うまく使えばストリーミング メディアの分野での作業効率を大幅に向上させることができます。

おすすめ

転載: blog.csdn.net/water1209/article/details/131613251