回答:
このブログエントリから引用したこの例を参照してください。ただし、新しい構文用に更新されています。次のような効果があるはずです。
ffmpeg -i video.mp4 -i audio.wav \
-c:v copy -c:a aac -strict experimental output.mp4
ここでは、ビデオファイルにはまだオーディオストリームが含まれておらず、入力形式と同じ出力形式(ここではMP4)を使用すると仮定します。
MP4はPCMオーディオストリームを伝送できないため、上記のコマンドはオーディオをトランスコードします。必要に応じて、他の必要なオーディオコーデックを使用できます。詳細については、AACエンコーディングガイドを参照してください。
オーディオまたはビデオストリームが長い場合は、-shortest
1つのファイルが終了するとffmpegがエンコードを停止するようにオプションを追加できます。
出力コンテナーが(ほぼ)任意のコーデック(MKVなど)を処理できる場合、オーディオストリームとビデオストリームの両方を単純にコピーできます。
ffmpeg -i video.mp4 -i audio.wav -c copy output.mkv
入力ビデオに既にオーディオが含まれていて、それを置き換える場合は、どのオーディオストリームを使用するかをffmpegに伝える必要があります。
ffmpeg -i video.mp4 -i audio.wav \
-c:v copy -c:a aac -strict experimental \
-map 0:v:0 -map 1:a:0 output.mp4
このmap
オプションは、ffmpegが最初の入力からの最初のビデオストリームと2番目の入力からの最初のオーディオストリームのみを出力ファイルに使用するようにします。
ffmpeg -i audio.wav -i video.mp4 -acodec copy -vcodec copy -f mkv output.mkv
私の評判で最初の答えにコメントを書くことは許可されていないので、webmsをエンコードするときにこの問題が発生したため、ここに補遺を記載します。
たとえば、オーディオストリームがビデオストリームよりも長い場合は、カットする必要があります。カットしないと、最後のビデオフレームが静止画像およびオーディオとして実行されます。
いずれかのストリームをカットするには、-i "file.ext"の前に-ss [hh:mm:ss] -t [ss]を使用できます。
-ss [...]はカットの開始点を定義します
-t [...]はセグメントの長さを秒単位で定義します
例:
ffmpeg.exe -ss 00:00:10 -t 5 -i "video.mp4" -ss 0:00:01 -t 5 -i "music.m4a" -map 0:v:0 -map 1:a:0 -y out.mp4
-shortest
端を切るためだけに使用することもできます。
-openコマンドプロンプト(windows + r-> cmd-> enter)
-次に、オーディオとビデオのファイルがあるフォルダー内に移動します
このcmdを適用します
ffmpeg -i "videoFile.mp4" -i "audioFile.mp3" -shortest outPutFile.mp4
Enter .... outPutFime.mp4(オーディオとビデオのマージされたファイル)という名前の新しいファイルを取得します
-shortest
タグは非常に気の利いたものです。@ user136036の答えよりもはるかに簡単です。
これは私のために働いた:
ffmpeg.exe -i AudioT.m4a -i VideoT.mp4 -acodec copy -vcodec copy muxed.mp4