†ぽんこつビデオ工房†

複数ファイルのバインド

作成開始日 2017.07.13
最終更新日 2020.01.31

●素通しバインド(再エンコードなし)

この方法は高速で無損失だが、原則的にVOB/MPEG系でしか使えない。また、各ファイルのフォーマットは統一されている必要がある。なお、h.264を無損失でバインドするには、後述のリスト方式を使用する。

例)inp1.vob、inp2.vob、inp3.vobの3本のファイルを1本のvobファイルにまとめる。

ffmpeg -i "concat:inp1.vob|inp2.vob|inp3.vob" -c copy out.vob

【参考】VOB/MPEG系では、コマンドラインのCOPYコマンドを用いて、「COPY /B inp1.vob+inp2.vob+inp3.vob out.vob」としてもバインド可能。ただし、この方法では、時間情報に不整合が起きるので、やはり最後にffmpeg -c copyで素通し変換を掛ける方がよい。

●再エンコードしてバインド

基本的に任意のコーデックに適用可能だが、再エンコを伴うため変換速度は遅く、一定の画質劣化も不可避。ただし、mpeg系(VOB/VRO)の原盤から、h.264の視聴用ファイルを作成する場合などは、どの途再エンコが必要になるのだから、この方法を忌避する理由にはならない。

例)inp1.mp4、inp2.mp4、inp3.mp4の3本のファイルを1本のaviファイルにまとめる。なお、コーデックはh.264とする。

ffmpeg -i inp1.mp4 -i inp2.mp4 -i inp3.mp4  -vcodec libx264
-filter_complex "concat=n=3:v=1:a=1" out.avi
【注意】「concat=n=3」がバインドするファイルの本数指定。本数を変更する場合、指定を忘れやすいので注意。

●リストを用いたバインド

バインドするファイルをコマンドラインではなく、別ファイル(リスト)で指定する方法。少し面倒だが、h.264/mp4ファイルも無損失でバインドできる。

例)mov1.mp4、mov2.mp4、mov3.mp4…を無損失(再エンコなし)でバインドする

ffmpeg -f concat -i list.txt -c copy out.mp4
ここで、list.txtの中身は;
file mov1.mp4
file mov2.mp4
file mov3.mp4
…   ……
のように、「file」に続けてファイル名を列挙したのもの。なお、パス付きのファイル名を使用する場合は「-safe 0」オプションが必要。また、ファイル名はシングルクオート(')で括ることができるが、ダブルクオート(")はダメらしい。


【ぽんこつビデオ工房目次】 【ホーム】