背景
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
これは、空のオーディオ ファイルを入力として使用するよりも簡単です。