web-dev-qa-db-ja.com

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

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

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

147
Sandy

音声の再エンコードによる、ビデオとオーディオの結合

この例は、 このブログエントリ から取得したものですが、新しい構文に更新されています。それは次のような効果をもたらすものです。

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

ここでは、ビデオファイルにまだオーディオストリームが含まれていないこと、および入力フォーマットと同じ出力フォーマット(ここではMP4)を使用したいとします。

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

オーディオやビデオのストリームがもっと長い場合は、1つのファイルが終了するとffmpegがエンコードを停止するように-shortestオプションを追加できます。

再エンコードせずにオーディオをコピーする

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番目の入力からの最初のオーディオストリームのみを出力ファイルに使用します。

243
Patrick Georgi

私は自分の評判で最初の答えにコメントを書くことを許されていないので、ここでの補遺です。なぜなら私は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
12
user136036

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

それからあなたがオーディオとビデオファイルを持っているフォルダーの中に行ってください

このcmdを適用

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

....と入力すると、outPutFime.mp4という名前の新しいファイル(オーディオとビデオのマージファイル)が表示されます。

4
UniCoder

これは私のために働いた:

ffmpeg.exe -i AudioT.m4a -i VideoT.mp4 -acodec copy -vcodec copy muxed.mp4
3
Ronald

Mencoderを使ってみてください(はい、それはffmpegベースですが、あなたは知りません)。引数-audiofileを使います。私は一般的にffmpegを使用しています、しかし、塩のつまみでこのアドバイスをしてください。

そして、あなたがWindowsを使っているなら、Mediacoder(もう悲しいことにオープンソースではなくなった)がうまくいく...それは基本的に多くのGNUエンコーダといくつかの非フリーのもののためのフロントエンドです。

1
Wyatt8740