オーディオファイル(.wavまたは.au形式)とビデオファイル(.mp4形式)をマージしたいです。
これを実現する方法を教えてください。これらのファイルを新しい.mp4ビデオファイルにマージしたいです。 ffmpegコマンドは大歓迎です。
この例は、 このブログエントリ から取得したものですが、新しい構文に更新されています。それは次のような効果をもたらすものです。
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番目の入力からの最初のオーディオストリームのみを出力ファイルに使用します。
私は自分の評判で最初の答えにコメントを書くことを許されていないので、ここでの補遺です。なぜなら私は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
- コマンドプロンプトを開く(windows + r - > cmd-> enter)
それからあなたがオーディオとビデオファイルを持っているフォルダーの中に行ってください
このcmdを適用
ffmpeg -i "videoFile.mp4" -i "audioFile.mp3" -shortest outPutFile.mp4
....と入力すると、outPutFime.mp4という名前の新しいファイル(オーディオとビデオのマージファイル)が表示されます。
これは私のために働いた:
ffmpeg.exe -i AudioT.m4a -i VideoT.mp4 -acodec copy -vcodec copy muxed.mp4
Mencoderを使ってみてください(はい、それはffmpegベースですが、あなたは知りません)。引数-audiofile
を使います。私は一般的にffmpegを使用しています、しかし、塩のつまみでこのアドバイスをしてください。
そして、あなたがWindowsを使っているなら、Mediacoder(もう悲しいことにオープンソースではなくなった)がうまくいく...それは基本的に多くのGNUエンコーダといくつかの非フリーのもののためのフロントエンドです。