ffmpegで短い時間の動画を連結してまとめる方法を紹介します。
ここでは、同じ機種で撮影した動画をまとめることを想定していますので、各々のファイルで形式が異なる場合はこの方法は使えません。
また、劣化防止と時間短縮のため、再エンコードをしない方法をとっていますが、記録状態などによってエラーが発生したり再生できないファイルになるかもしれません。
ここでは、撮影開始から一時停止までの1シーン(数秒~数分程度)毎に作成される短い動画をまとめて、ファイル単位で再生する時に扱いやすくすることを目的としています。1ファイルがGB単位になるような大きい動画を結合することは想定していませんので、この方法では上手くいかないかもしれません
AVCHD形式のビデオカメラで記録したMTSファイルを連結する
ビデオカメラで録画/一時停止した場面で1ファイルとなるので、これらのファイルをまとめます。
/usr/bin/ffmpeg -i "concat:00409.MTS|00410.MTS|00411.MTS|" -c copy -y "/srv/cache/converted/2015-03-02_080638/00411.MTS"
ファイルのコピーを行うだけですので、短時間で完了します。
撮影時刻などのメタデータは失われるか、異常な内容になるかもしれません。
ドライブレコーダで記録したMOVファイルを連結する
ドライブレコーダでは音声がpcmで記録されているため、aacに変換してからtsフォーマットに格納します
- フォーマットを変更する
ffmpeg -i FILE150215-122245.MOV -map 0 -bsf:v h264_mp4toannexb -c:v copy -c:a libfaac -ar 32000 -ac 2 -b:a 96k -strict experimental FILE150215-122245.ts
※ h264_mp4toannexb はH.264のビットストリームをMPEG2 TSフォーマットに変更する際に必要なオプションです
https://www.ffmpeg.org/ffmpeg-bitstream-filters.html#h264_005fmp4toannexb
- 複数のtsファイルをまとめる
/usr/bin/ffmpeg -i "concat:FILE150215-122245.ts|FILE150215-122545.ts|...(いくつかのファイル)...|" -c copy "FILE150215-122545.ts"
参考