【ffmpeg】 マルチトラックの動画の作り方

マルチトラック(多重)の動画とは本編の音声の他に副音声(コメンタリー)や字幕を入れたり、複数の映像シーンを一つの動画に入れた動画のことである。
map の次に来る数字が入力順に割り当てられ 0 から始まる。: で区切って次の数字がコンテナフォーマットに割り当てられている順番になる。一般的な動画では 0:0 が映像、0:1 が音声で、0:2 以降が副音声または字幕になる。この割り当て順番は ffmpeg -i input から調べられる。映像と音声のすべてを取り込む場合は 0(入力順番)だけを指定してもよい。特定のトラックを削除する場合はトラック番号に -(マイナス) をつける。

次に 0:v, 0:a の指定方法。これは一つのコンテナフォーマットに複数のデータが入っている場合に映像、音声のそれぞれのすべて取り込むのに使われ、 0:v:0 だと 1番目に入力した映像の1番目だけ指定する。0:a:1 だと音声が複数ある場合に2番目だけの音声を指定する。

映像1つ、音声2つの動画のコンテナを入れ替える。
ffmpeg -i input.mp4 -map 0:v:0 -vcodec copy -map 0:a:0 -map 0:a:1 -acodec copy output.mkv

それぞれ個別の映像と2つ音声を1つの動画にする。
ffmpeg -i video.mp4 -i audio1.m4a -i audio2.m4a -map 0:v:0 -vcodec copy -map 1:a:0 -map 2:a:0 -acodec copy output.mp4

2番目の副音声だけを取り出す。
ffmpeg -i input.mp4 -vn -acodec copy -map 0:a:1 audio2.m4a

2つの動画を多重化して1つの動画にする。
ffmpeg -i input1.mp4 -i input2.mp4 -c copy -map 0 -map 1 output.mp4

2つの動画を多重化して1つの動画にするが、2入力の音声は除外する。
ffmpeg -i input1.mp4 -i input2.mp4 -c copy -map 0 -map 1 -map -1:a output.mp4

複数出力については ffmpeg で Apple HTTP Live Streaming(HLS)を扱うffmpeg で複数出力 も参照。

補足(追記 2016年6月21日)
複数入力・1出力のマルチトラックではなく複数入力・複数出力する場合は出力オプションに map を指定。

1から3入力を同じように1から3出力する例
ffmpeg -i input1.mp4 -i input2.mp4 -i input3.mp4 -map 0 -c copy output1.mp4 -map 1 -c copy output2.mp4 -map 2 -c copy output3.mp4

字幕について補足(2018年2月7日)
字幕ファイルを扱う場合は字幕のコーデック指定を行わないと一緒に出力されない。
ffmpeg -i input.mp4 -i sub.ass -c copy -c:s copy output.mkv

映像、音声、字幕を別々にまとめて1つにする例
ffmpeg -i video.mp4 -i audio.m4a -i sub.srt -c copy -c:s copy output.mkv

さらに入力するすべてをコピーするには -map 0 のように map を指定する
ffmpeg -i video.mp4 -i audio.m4a -i sub.srt -map 0 -map 1 -map 2 -c copy -c:s copy output.mkv

mp4 に字幕をつけるには mov_text 形式にエンコードする。
ffmpeg -i input.mp4 -i sub.ass -c copy -c:s mov_text output.mp4

参考記事
関連記事

コメント

非公開コメント

プロフィール

ロベルト

お問い合わせはこちらまで
robelt2525[at]gmail.com

中の人 @nico_lab

広告リンク
Amazon
楽天市場

ブログ更新用 @blo_nico_lab

詳しいプロフィールはこちら

当ブログは、Amazonアソシエイトに参加しています。