ffmpeg で mp4 ファイルを結合する

たくさんの mp4 ファイルを結合したかったので、ffmpeg を使って結合しました。

やり方としては、まず以下のように結合ファイルの一覧を記述したテキストファイルを用意します。
ここでは filelist.txt というファイル名で作成しました。

file '001.mp4'
file '002.mp4'
file '003.mp4'

そして、以下のようにコマンドを実行すれば結合できます。

ffmpeg -f concat -i filelist.txt -c copy sample.mp4

しかし、動画ファイルがたくさんある場合など、filelist.txt を手動で作るのが大変なことがあったので、以下のようなスクリプトを作成しました。
ディレクトリ内を再帰的に探索し、ファイル名順で結合します。

#!/bin/bash

cd `dirname $0`

DIR=hoge
FILELIST=filelist.txt
OUTPUT=sample.mp4

for pathfile in `\find $DIR -name '*.mp4' | sort`; do
    echo file \'$pathfile\' >> $FILELIST
done

ffmpeg -f concat -i $FILELIST -c copy $OUTPUT

rm $FILELIST

参考 URL

Hugo で構築されています。
テーマ StackJimmy によって設計されています。