FFMPEGはビデオフォーマットを変換しながらオーディオトラックを追加します

FFMPEGはビデオフォーマットを変換しながらオーディオトラックを追加します

背景

AVI ファイルを H264 (MP4) に変換する必要があります。次のようにして正常に変換しています。

-i mymovie.avi -c:v libx264 -crf 19 -preset slow -c:a libfaac -pix_fmt yuv420p -f mp4 -b:a 192k -y -an output.mp4

私は C# .Net Winforms アプリケーションを介してコマンドを呼び出していますが、これは回答にほとんど影響しないと思われます。

質問

オーディオ トラックを追加するにはどうすればいいですか? Instagram にビデオをアップロードする必要があるので、オーディオ トラックを追加する必要があります。Instagram では、オーディオ トラックのないファイルは拒否されるようです (困ったことに)。実際には、非常に長いオーディオ トラックは必要ありません。私が考えていたのは、MP3 形式で数秒間の「無音」です。

出力として AAC オーディオが必要になると思います。

ちなみに、この-anコマンドでは音声が提供されないことも認識しており、後の試行ではこれを削除しました。

これまでの試み

オーディオはビデオよりも短いため、コマンドを使用する必要があることがわかりました-shortest。実際には、エンコード中にビデオに埋め込まれたオーディオ ストリームを取得するために、空の MP3 (または同様のもの) を追加します。

コマンドの使用も試みました-mapが、成功しませんでした。

答え1

さて、これが私が動作しているコマンドです。ffmpeg のビルドには含まれていないことがわかったのでlibfaac、切り替えました。FFMPEG は追加の設定なしで 2 つの入力を問題なく処理できるため、オプションも必要ありませんでした-map

-i test.avi -i music.mp3 -c:v libx264 -crf 19 -preset slow -c:a libvo_aacenc -pix_fmt yuv420p -f mp4 -b:a 192k -y -shortest output.mp4

私のオリジナルと実際に動作するものの違いは次のとおりです。

  • libvo_aacenc の置き換えlibfaac
  • -shortestビデオよりも短いオーディオを処理するために追加されました
  • -iオーディオ入力を提供するために使用される

アップデート

コメントで素晴らしい意見をいただいた後のコマンドは

-i test.avi -i music.mp3 -c:v libx264 -crf 19 -preset slow -c:a aac -strict experimental -pix_fmt yuv420p -f mp4 -b:a 192k -y -shortest output.mp4

答え2

無音のオーディオストリームを生成するには、aevalsrcオーディオソース:

ffmpeg -y -i test.avi -f lavfi -i aevalsrc=0 -c:v libx264 -crf 19 -preset slow \
-pix_fmt yuv420p -shortest output.mp4

これは、空のオーディオ ファイルを入力として使用するよりも簡単です。

関連情報