ffmpeg で映像や音声を連結(後ろにつなげる)する方法に concat があるが、concat にも3種類ありそれぞれ使い道が異なるのでそれらの説明。個別の記事は以前に書いているので補足説明を加えた。

まずは連結するファイルのコーデックが同じで、かつ同じ解像度や fps、エンコード設定なら再エンコードしない demuxer, protocol の concat がおすすめ。demuxer, protocol の違いは demuxer のほうが新しい機能で対応コンテナが protocol より柔軟である。filter の concat はフィルタ経由で連結するので再エンコードされるが、リサイズやインターレース解除、デテレシネなどのフィルタを当てたりするのならこちらの方が連結部分がきれいに仕上がりやすい。

公式 wiki
Concatenate – FFmpeg

One thought on “concat を使い分ける”

  • st

    大変参考になりました。HLSのaac断片ファイルをffmpegで結合する
    ために使いました。2000個を超えることもあるので、3番目が絶対で
    す。aacの無変換の結合ソフトは殆どありません。猛スピードで結合
    され、2000個がわずか30秒くらいです。参考のバッチは—

    断片のファイルを、専用の別フォルダに移して名前の昇順としますが、
    このフォルダに次のバッチファイルをNotePadなどにコピーして、
    aac-ffmpeg-join.batなどとして保存し、さらにffmpeg.exeをコピーして
    置いて下さい。

    if exist output.aac del output.aac
    if exist list.txt del list.txt
    dir *.aac /b /a-d > list.txt
    if exist dst.txt del dst.txt
    for /f “delims=” %%l in (list.txt) do @echo file^ %%l >> dst.txt
    ffmpeg -f concat -safe 0 -i dst.txt -c copy output.aac

    ここでこのバッチファイルaac-ffmpeg-join.batをダブルクリックで起動
    します。これで結合が行われ、output.aacとして作成されます。
    約2000個のファイルを約30秒程度で結合します。結合が終了したら、すべての
    xxxxx.aacを削除して、次のデータに備えます。できたoutput.aacは移動
    した方がよいでしょう。存在していると、次回に削除されます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)