ffmpegを使って、動画ファイルを結合したり、音声出力を変更したりしたので、
備忘録として記録しておきます。
ffmpeg version 5.0.1 で試しました。
1. 複数の動画ファイルを結合する
list.txt には結合対象ファイルを記述する。
ffmpeg -safe 0 -f concat -i list.txt -c copy output.mp4
file 'video1.mp4'
file 'video2.mp4'
無音にする場合は、-map を使う。
ffmpeg -safe 0 -f concat -i list.txt -c copy -map 0:v:0 output.mp4
指定秒数に切るときは、-t を使う。以下は、30秒にカットする例。
ffmpeg -safe 0 -f concat -i list.txt -c copy -t 30 output.mp4
音量を調整する場合。1.0 が基準となる。以下は元の音量から2倍にさせる例。
ffmpeg -safe 0 -f concat -i list.txt -vcodec copy -af "volume=2.0" output.mp4
音声にフェード処理を入れる場合。以下は、開始5秒地点から1秒かけて無音からフェードインさせる例。
ffmpeg -safe 0 -f concat -i list.txt -vcodec copy -af "afade=t=in:st=5:d=1" output.mp4
2. 動画ファイルと音声ファイルを結合する
2-1. 両方の音声を出力させる
ffmpeg -safe 0 -f concat -i list.txt -i audio.mp3 -filter_complex "amix" output.mp4
・動画ファイルの音声:出力あり
・音声ファイルの音声:出力あり
※動画ファイルと音声ファイルを結合する場合、出力ファイルの尺は長い方が優先される。
つまり、動画ファイルの合計時間が音声ファイルよりも長ければ、終盤で無音状態が発生する。
オプション -t を使うと出力ファイルの尺を変更することができる。
ffmpeg -safe 0 -f concat -i list.txt -i audio.mp3 -t 30 -filter_complex "amix" output.mp4
2-2. 音声ファイルの音声のみを出力させる
ffmpeg -safe 0 -f concat -i list.txt -i audio.mp3 -map 0:v:0 -map 1:a:0 output.mp4
・動画ファイルの音声:出力なし
・音声ファイルの音声:出力あり
2-3. 動画ファイルの音声のみを出力させる
ffmpeg -safe 0 -f concat -i list.txt -i audio.mp3 -map 0:v:0 -map 0:a:0 output.mp4
・動画ファイルの音声:出力あり
・音声ファイルの音声:出力なし
3. 動画ファイルと音声ファイルの組み合わせ
3-1. 音量の調整
音声ファイルの音量を調整する場合。
ffmpeg -safe 0 -f concat -i list.txt -i audio.mp3 -map 0:v:0 -map 1:a:0 \
-filter_complex "[1:a]volume=2.0" output.mp4
動画ファイルの音声と音声ファイルの音声の音量をそれぞれ調整する場合。
ffmpeg -safe 0 -f concat -i list.txt -i audio.mp3 -filter_complex "\
[0:a]volume=2.0[0a];[1:a]volume=0.5[1a];[0a][1a]amix" output.mp4
・[0:a] : 動画ファイルの音声
・[1:a] : 音声ファイルの音声
3-2. 音声フェード処理(フェードイン / フェードアウト)
音声ファイルの音声にフェード処理を入れる場合。
ffmpeg -safe 0 -f concat -i list.txt -i audio.mp3 -map 0:v:0 -map 1:a:0 \
-filter_complex "[1:a]afade=t=in:st=5:d=1" output.mp4
動画ファイルの音声と音声ファイルの音声それぞれにフェード処理を入れる場合。
ffmpeg -safe 0 -f concat -i list.txt -i audio.mp3 -filter_complex "\
[0:a]afade=t=in:st=5:d=1,afade=t=out:st=30:d=2[0a]; \
[1:a]afade=t=in:st=5:d=1,afade=t=out:st=30:d=2[1a]; \
[0a][1a]amix" output.mp4
3-3. 音量の調整 と 音声フェード処理
音量の調整かつ音声フェード処理を、動画ファイルと音声ファイルそれぞれに設定する場合。
ffmpeg -safe 0 -f concat -i list.txt -i audio.mp3 -filter_complex "\
[0:a]volume=2.0,afade=t=in:st=5:d=1,afade=t=out:st=30:d=2[0a]; \
[1:a]volume=0.5,afade=t=in:st=5:d=1,afade=t=out:st=30:d=2[1a]; \
[0a][1a]amix" output.mp4