1. FFmpeg の概要
FFmpeg は、高品質で高速のマルチメディア処理を提供するように設計された、無料のオープンソースのクロスプラットフォームのオーディオおよびビデオ処理ツールであり、オーディオとビデオをストリーミングするように設計されています。
FFmpeg は、業界で認められた最も強力かつ包括的なオーディオおよびビデオ処理ツールの 1 つとなり、広く使用されています。ほとんどのオーディオおよびビデオ関連のアプリケーションおよびツール ライブラリは、直接的または間接的に FFmpeg を参照します。
FFmpeg の開発は 2000 年に始まり、当初はフランスのプログラマー Fabrice Bellard によって開始され、その後、ますます多くのオープンソース貢献者が参加しました。現在、FFmpeg は数人の開発者からなるチームによって保守および開発されています。
2. ffmpeg の作者とチーム
Fabrice Bellard はフランスの有名なコンピューター プログラマーであり、FFmpeg、QEMU、その他のプロジェクトの創設で業界で知られています。
彼のプロフィール Web サイトはbellard.org/ です。
彼が作成したいくつかのプロジェクトがリストされています。彼は幅広い興味を持ち、さまざまな分野に手を出しており、プログラミングの真の達人です。
3. 基本コマンド
FFmpeg の基本的なコマンドをいくつか示します。
1. トランスコーディング:オーディオ ファイルとビデオ ファイルをある形式から別の形式に変換します。たとえば、MP4 ファイルを AVI ファイルに変換するには、次のコマンドを使用します。
ffmpeg -i input.mp4 output.avi
このコマンドでは、「-i」は入力ファイル、「input.mp4」は入力ファイルの名前、「output.avi」は出力ファイルの名前を意味します。FFmpeg は入力ファイルの形式を自動的に検出するため、入力ファイルの形式を指定する必要はありません。
2. トリミング:オーディオ ファイルとビデオ ファイルの一部をインターセプトします。たとえば、MP4 ファイルの最初の 10 秒をキャプチャするには、次のコマンドを使用します。
ffmpeg -i input.mp4 -ss 00:00:00 -t 00:00:10 -c copy output.mp4
このコマンドでは、「-ss」は開始時刻、「00:00:00」は開始時刻のタイムスタンプ、「-t」は期間、「00:00:10」は期間のタイムスタンプを意味します。 , 「-c copy」は、切り取った部分を再エンコードせずに新規ファイルとして保存することを意味します。切り取った部分を再エンコードする必要がある場合は、次のコマンドを使用できます。
ffmpeg -i input.mp4 -ss 00:00:00 -t 00:00:10 -c:v libx264 -c:a aac output.mp4
このコマンドでは、「-c:v libx264」はビデオを H.264 エンコーダでエンコードすることを意味し、「-c:a aac」はオーディオを AAC エンコーダでエンコードすることを意味します。
[学習アドレス]: FFmpeg/WebRTC/RTMP/NDK/Android オーディオおよびビデオ ストリーミング メディアの高度な開発
[記事の特典]: より多くのオーディオおよびビデオ学習教材パッケージ、Dachang インタビューの質問、技術ビデオ、および学習ロードマップを無料で受け取ります。 C/C++、Linux、FFmpeg webRTC rtmp hls rtsp ffplay srs など) 必要な場合は、 1079654574 をクリックしてグループに参加して受信できます~
3. サイズ変更:オーディオ ファイルとビデオ ファイルのサイズを調整します。たとえば、MP4 ファイルの幅を 640 ピクセルに変更するには、次のコマンドを使用します。
ffmpeg -i input.mp4 -vf scale=640:-1 output.mp4
このコマンドでは、「-vfscale=640:-1」はスケール フィルターを使用してビデオを調整することを意味し、「640」はターゲットの幅、「-1」はターゲットの幅に基づいてターゲットの高さを自動的に計算することを意味します。 。
4. フレーム レート変換:オーディオ ファイルとビデオ ファイルのフレーム レートを調整します。たとえば、MP4 ファイルのフレーム レートを 30 フレームに調整するには、次のコマンドを使用します。
ffmpeg -i input.mp4 -r 30 output.mp4
このコマンドの「-r 30」は、出力ファイルのフレーム レートを 30 フレームに設定することを意味します。
5. オーディオの抽出:ビデオ ファイルからオーディオ ファイルを抽出します。たとえば、MP4 ファイルからオーディオを抽出するには、次のコマンドを使用します。
ffmpeg -i input.mp4 -vn -acodec copy output.aac
このコマンドの「-vn」はビデオを出力しないことを意味し、「-acodec copy」はオーディオ ストリームを再エンコードせずに新しいファイルにコピーすることを意味します。
6. ウォーターマークの追加 (ウォーターマークの追加):ビデオにウォーターマークとして画像を追加します。たとえば、PNG 画像をウォーターマークとして MP4 ファイルに追加するには、次のコマンドを使用します。
ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=10:10" output.mp4
このコマンドでは、「-i Watermark.png」はウォーターマーク画像を入力することを意味し、「-filter_complex」は複雑なフィルターを使用することを意味し、「overlay=10:10」はビデオの左上隅にウォーターマークを配置することを意味します。
4. 高度なFFmpeg6.0
4.1 FFmpeg フィルタ
-
FFmpeg フィルター チェーン フレームワーク
-
オーディオフィルターフレームワーク
-
ビデオフィルターフレームワーク
-
マルチチャンネルオーディオミキシング amix
-
ビデオ透かし透かし
-
ビデオ領域のトリミングと反転
-
ビデオにロゴを追加
注: フィルタはビデオ編集の分野で広く使用されています。
4.2 ffplay プレーヤー
-
ffplay.cの意味をマスターする
-
ffplayフレームワーク分析
-
逆多重化スレッド
-
オーディオデコードスレッド
-
ビデオデコードスレッド
-
サウンド出力コールバック
-
画面描画間隔
-
オーディオのリサンプリング
-
画面サイズフォーマット変換
-
オーディオ、ビデオ、外部クロック同期の違い
-
ビデオ参照時の音声リサンプリング補正
-
ボリュームミュートとサイズ調整の本質
-
オーディオおよびビデオのパケットキューのサイズ制限
-
オーディオとビデオのパケット キューのスレッド セーフ
-
オーディオおよびビデオ フレームのキュー サイズ制限
-
オーディオおよびビデオ フレーム キューのスレッド セーフ
-
一時停止、再生の実装メカニズム
-
シーク再生による画面固着の問題
-
シーク再生データキュー、同期クロック処理
-
フレームごとに再生する方法
-
プレーヤーの退場プロセスの重要なポイント
注: ffplay.c は ffplay コマンドのソース コードです。ffplay をマスターすると、半分の労力で 2 倍の結果が得られる独自のプレーヤーを開発するのに役立ちます。
5. まとめ
FFmpeg は、さまざまな形式のオーディオおよびビデオ ファイルを処理できる強力なオーディオおよびビデオ処理ツールです。デジタル オーディオおよびビデオの記録、変換、ストリームへの変換に使用できるオープン ソース コンピュータ プログラムのセットです。