再エンコードせずにビデオを結合する基本的な方法は、連結デマルチプレクサを使用することです。このデバイスでは、結合されるファイルが、コーデック、フレームレート、ビデオディメンション、タイムベースなどの特定のプロパティを共有する必要があります。
最初のステップは、ブランクセグメントを作成することです。これは、ヘッドとテールの両方で使用できます。
ffmpeg -i fullvideo.mp4 -vf trim=0:3,geq=0:128:128 -af atrim=0:3,volume=0 -video_track_timescale 600 3sec.mp4
完全なビデオのために1つの簿記ステップをしなければなりません。そうしないと、結合されたビデオが誤った速度で実行される可能性があります。
ffmpeg -i fullvideo.mp4 -c copy -video_track_timescale 600 full600.mp4
次に、テキストファイルを作成します。
file 3sec.mp4
file full600.mp4
file 3sec.mp4
次に実行します
ffmpeg -f concat -i list.txt -c copy merged.mp4
最初のステップでは、ビデオストリームが最も一般的なピクセル形式であることを前提としていますyuv420p
。これは、ウェブプレーヤーやスマートフォンのカメラ、家庭用カムコーダーなどでサポートされている唯一のピクセル形式なので問題ありません。そうでない場合、geq
フィルターは失敗する可能性があります。
また、暗黙のうちに、フルビデオはmedium
x264のプリセットで生成されるよりも多くの参照フレームを使用しないと想定しています。これは、95%のビデオでは安全な仮定です。
最後に、ビデオ全体にはオーディオコーデックとしてAAC-LCが含まれていると想定しています。ほとんどの電話/カメラ/ウェブビデオに当てはまると期待されています。