web-dev-qa-db-ja.com

ffmpegを使用してビデオに新しいオーディオ(ミキシングではない)を追加する方法は?

私は次のようなコマンドを使用しました:

ffmpeg -i video.avi -i audio.mp3 -vcodec codec -acodec codec output_video.avi -newaudio

新しいオーディオトラックをビデオに追加するための最新バージョン(ミックスではない)。

しかし、ffmpegを最新バージョンに更新し(ffmpeg version git-2012-06-16-809d71d)、このバージョンではパラメーター-newaudioが機能しません。

ffmpegを使用して、ビデオに(ミックスではなく)新しいオーディオを追加する方法を教えてください。

117
Vetalll

オーディオをビデオに追加:ストリームコピー

ffmpeg -i video.avi -i audio.mp3 -codec copy -shortest output.avi
  • -mapオプションを省略すると、デフォルトの ストリーム選択 が使用されます。これは、ビデオ入力に音声がない場合に機能します。
  • この例では、-codec copyを使用して ストリームコピー (再エンコードなし。品質が維持され、高速です)。
  • -shortestオプションは、output.aviを最短の入力と同じ期間にします。

ビデオにオーディオを追加:再エンコード

出力が元の形式を気に入らない場合、または形式を変更する場合は、エンコーダーを指定できます。

ffmpeg -i video.avi -i audio.mp3 -c:v libx264 -c:a libvorbis -shortest output.mkv

特定のストリームを手動で選択するには

デフォルトのストリーム選択では、希望する結果が得られない場合があります。この例では、video.mp4にはビデオandオーディオがあり、audio.m4aにはオーディオのみがあります。 -mapを使用して、video.mp4からビデオを選択し、audio.m4aからオーディオを選択します。

ffmpeg -i video.mp4 -i audio.m4a -map 0:v -map 1:a -c copy -shortest output.mp4
  • -map 0:v –入力0(最初の入力、video.mp4)からvideoストリームを選択します。
  • -map 1:a –入力1(2番目の入力、audio.m4a)からaudioストリームを選択します。

2つのオーディオ入力を1つにミキシング/結合する

video.webmからビデオを取得し、 amerge filter を使用して、video.webmaudio.ogaからのオーディオを結合します。

ffmpeg -i video.webm -i audio.oga -filter_complex \
"[0:a][1:a]amerge=inputs=2[a]" \
-map 0:v -map "[a]" -c:v copy -c:a libvorbis -ac 2 -shortest out.webm

サイレントオーディオを生成する

anullsrc filter を使用して、サイレントオーディオストリームを作成できます。このフィルターを使用すると、目的のチャンネルレイアウト(モノ、ステレオ、5.1など)とサンプルレートを選択できます。

ffmpeg -i video.mp4 -f lavfi -i anullsrc=channel_layout=stereo:sample_rate=44100 \
-c:v copy -shortest output.mp4

こちらもご覧ください

245
llogan

mp3音楽をwavに

ffmpeg -i music.mp3 music.wav

ビデオに合わせて切り捨てる

ffmpeg -i music.wav -ss 0 -t 37 musicshort.wav

音楽とビデオをミックスする

ffmpeg -i musicshort.wav -i movie.avi final_video.avi
21
jwilson

入力ビデオに複数のオーディオトラックがあり、さらに1つ追加する必要がある場合は、次のコマンドを使用します。

ffmpeg -i input_video_with_audio.avi -i new_audio.ac3 -map 0 -map 1 -codec copy output_video.avi

-map 0は、最初の入力ファイル(input_video_with_audio.avi)からすべてのストリームをコピー(含める)することを意味し、-map 1は、2番目の入力ファイル(new_audio.ac3)からすべてのストリーム(この場合は1つ)を含めることを意味します。

14
user2513149

これらのソリューションはどれも私にとってはうまくいきませんでした。元の音声が上書きされていたか、より複雑な「マージ」の例で「メモリのマッピングに失敗しました」などのエラーが表示されていました。 -filter_complex amixが必要なようです。

ffmpeg -i videowithaudioyouwanttokeep.mp4 -i audiotooverlay.mp3 -vcodec copy -filter_complex amix -map 0:v -map 0:a -map 1:a -shortest -b:a 144k out.mkv
2
Tod

私にとっては何もうまくいきませんでした(入力された.mp4ビデオに音声がなかったためだと思います)。

ffmpeg -i input_video.mp4 -i balipraiavid.wav -map 0:v:0 -map 1:a:0 output.mp4

0
Alexandre Doré

古いバージョンのFFMPEGを使用していて、アップグレードできない場合は、次を実行できます。

ffmpeg -i PATH/VIDEO_FILE_NAME.mp4 -i PATH/AUDIO_FILE_NAME.mp3 -vcodec copy -shortest DESTINATION_PATH/NEW_VIDEO_FILE_NAME.mp4

-vcodecを使用したことに注意してください

0
Waqleh