FFmpegの改善方法 - 上級編

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 フィルタ

  1. FFmpeg フィルター チェーン フレームワーク

  2. オーディオフィルターフレームワーク

  3. ビデオフィルターフレームワーク

  4. マルチチャンネルオーディオミキシング amix

  5. ビデオ透かし透かし

  6. ビデオ領域のトリミングと反転

  7. ビデオにロゴを追加

注: フィルタはビデオ編集の分野で広く使用されています。

4.2 ffplay プレーヤー

  1. ffplay.cの意味をマスターする

  2. ffplayフレームワーク分析

  3. 逆多重化スレッド

  4. オーディオデコードスレッド

  5. ビデオデコードスレッド

  6. サウンド出力コールバック

  7. 画面描画間隔

  8. オーディオのリサンプリング

  9. 画面サイズフォーマット変換

  10. オーディオ、ビデオ、外部クロック同期の違い

  11. ビデオ参照時の音声リサンプリング補正

  12. ボリュームミュートとサイズ調整の本質

  13. オーディオおよびビデオのパケットキューのサイズ制限

  14. オーディオとビデオのパケット キューのスレッド セーフ

  15. オーディオおよびビデオ フレームのキュー サイズ制限

  16. オーディオおよびビデオ フレーム キューのスレッド セーフ

  17. 一時停止、再生の実装メカニズム

  18. シーク再生による画面固着の問題

  19. シーク再生データキュー、同期クロック処理

  20. フレームごとに再生する方法

  21. プレーヤーの退場プロセスの重要なポイント

注: ffplay.c は ffplay コマンドのソース コードです。ffplay をマスターすると、半分の労力で 2 倍の結果が得られる独自のプレーヤーを開発するのに役立ちます。

5. まとめ

FFmpeg は、さまざまな形式のオーディオおよびビデオ ファイルを処理できる強力なオーディオおよびビデオ処理ツールです。デジタル オーディオおよびビデオの記録、変換、ストリームへの変換に使用できるオープン ソース コンピュータ プログラムのセットです。

おすすめ

転載: blog.csdn.net/irainsa/article/details/130693083