ffmpegを使って、ビデオファイルの音声を音声ファイルに置き換えるにはどうしたらよいですか?
コマンドは以下のようなイメージです。
ffmpeg -i v.mp4 -i a.wav -MAGIC video-new.mp4
これは https://superuser.com/questions/800234/how-to-replace-an-audio-stream-in-a-video-file-with-multiple-audio-streams に非常に似ていますが、その質問は複数のオーディオトラックを処理するため、非常に複雑になり、単純なオーディオスワップにはどの部分のソリューションで十分なのかが不明になっています。
ビデオストリームを再エンコードせずにコピーすると、多くの時間を節約できますが、オーディオを再エンコードすると、非互換性を防ぐのに役立つかもしれません。
ffmpeg -i v.mp4 -i a.wav -c:v copy -map 0:v:0 -map 1:a:0 new.mp4
-map 0:v:0
は、入力の最初の (インデックス 0
) ビデオストリームを、出力の最初の (インデックス 0
) ビデオストリームにマップします。
-map 1:a:0
は、入力から2番目のオーディオストリーム (インデックス 1
) を、出力の1番目のオーディオストリーム (インデックス 0
) にマップします。
もし、オーディオがビデオよりも長い場合は、出力ファイル名の前に -shortest
を追加してください。
オーディオコーデックを指定しないと、自動的に動作中のコーデックが選択されます。例えば、-c:v copy
の後に -c:a libvorbis
を追加することで指定することができます。