ffmpegでオーディオファイルとビデオファイルをマージする方法


161

オーディオファイル(.wavまたは.au形式)をビデオファイル(.mp4形式)にマージしたい。

これを実現する方法を教えてください。これらのファイルを新しい.mp4ビデオファイルにマージしたいと思います。ffmpegコマンドは大歓迎です。


ここにも役立つかもしれないまともな記事があります... cfc.kizzx2.com/index.php/muxing-audio-and-video-with-ffmpeg
サイモンイースト

回答:


260

ビデオとオーディオのマージ、オーディオの再エンコード

このブログエントリから引用したこの例を参照してください。ただし、新しい構文用に更新されています。次のような効果があるはずです。

ffmpeg -i video.mp4 -i audio.wav \
-c:v copy -c:a aac -strict experimental output.mp4

ここでは、ビデオファイルにはまだオーディオストリームが含まれておらず、入力形式と同じ出力形式(ここではMP4)を使用すると仮定します。

MP4はPCMオーディオストリームを伝送できないため、上記のコマンドはオーディオをトランスコードします。必要に応じて、他の必要なオーディオコーデックを使用できます。詳細については、AACエンコーディングガイド参照してください。

オーディオまたはビデオストリームが長い場合は、-shortest1つのファイルが終了すると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はマージ中にフリーズします
サンディ

4
mp4コンテナにwavオーディオストリームがあるとは思わない。トライffmpeg -i audio.wav -i video.mp4 -acodec copy -vcodec copy -f mkv output.mkv
ルーク

1
私はこれを使用していますが、入力オーディオから元のオーディオを置き換えています。入力オーディオを入力ビデオのオーディオとマージする場合はどうなりますか?
イクバルマリク14

非常に甘いコマンドライン...
チャンドラナッカ14

素晴らしい、私はffmpeg -i video.mp4 -i audio.wav \ -c:v copy -c:a aac -strict experimental output.mp4を使用してMP3とWavファイルをマージしました... => mp4 5分、30秒レンダリング..ありがとう
ソニダ

12

私の評判で最初の答えにコメントを書くことは許可されていないので、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

4
-shortest端を切るためだけに使用することもできます。
nyuszika7h

5

-openコマンドプロンプト(windows + r-> cmd-> enter)

-次に、オーディオとビデオのファイルがあるフォルダー内に移動します

このcmdを適用します

ffmpeg -i "videoFile.mp4" -i "audioFile.mp3" -shortest outPutFile.mp4

Enter .... outPutFime.mp4(オーディオとビデオのマージされたファイル)という名前の新しいファイルを取得します


2
ここでコマンドラインの使用方法を説明する必要はありません。ユーザーがそれを理解できることはほぼ暗示されています。特に、アスカーがFFmpegを指定したためです。すべて同じですが、-shortestタグは非常に気の利いたものです。@ user136036の答えよりもはるかに簡単です。
キャット

3
これはすべてを再エンコードしますが、これはおそらく望んでいないことです。
mivk


「ffmpegの」は、内部または外部コマンドとして認識されない
UniCoder

ffmpegをPATHに追加する必要がありますwikihow.com/Install-FFmpeg-on-Windows
Arete


1

mencoderを使用してみてください(はい、それはffmpegベースですが、あなたは決して知りません)。-audiofile引数を使用します。ただし、私は一般にffmpegを使用します。そのため、このアドバイスには少々注意を払ってください。

また、Windowsを使用している場合、Mediacoder(残念ながらオープンソースではありません)は動作します。基本的には、多くのgnuエンコーダーといくつかの非フリーエンコーダーのフロントエンドです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.