ffmpeg で映像や音声を連結(後ろにつなげる)する方法に concat があるが、concat にも3種類ありそれぞれ使い道が異なるのでそれらの説明。個別の記事は以前に書いているので補足説明を加えた。
- filter :【ffmpeg】動画・音声を連結する concat の使い方
- protocol :【ffmpeg】動画・音声を連結する concat の使い方 其の2
- protocol :file宣言が不要なプロトコルconcatf
- demuxer :【ffmpeg】動画・音声を連結する concat の使い方 其の3
まずは連結するファイルのコーデックが同じで、かつ同じ解像度や fps、エンコード設定なら再エンコードしない demuxer, protocol の concat がおすすめ。demuxer, protocol の違いは demuxer のほうが新しい機能で対応コンテナが protocol より柔軟である。filter の concat はフィルタ経由で連結するので再エンコードされるが、リサイズやインターレース解除、デテレシネなどのフィルタを当てたりするのならこちらの方が連結部分がきれいに仕上がりやすい。
公式 wiki
Concatenate – FFmpeg
大変参考になりました。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は移動
した方がよいでしょう。存在していると、次回に削除されます。