mp4 を結合する

ffmpegを使うとmp4に限らずwavでもwmvでも結合できます。

ffmpegによるmp4結合の基本

結合には3種類あるようですが(How to concatenate two MP4 files using FFmpeg?)、”concat demuxer”を使うのが良さそうです。

mp4の場合はリスト・ファイル hoge.txtを作ります。 中身はこんな感じで。

file 'hoge1.mp4'
file 'hoge2.mp4'
file 'hoge3.mp4'

このファイルをffmpegに喰わせれば結合されます。

ffmpeg -f concat -safe 0 -i hoge.txt -c copy hoge-all.mp4

リスト・ファイルの作り方

上記のリスト・ファイルはshellなら次のようなコマンドで生成できます。 何度もリストを作る時はこういうスクリプトを使う方が楽でしょうね。

Concatenating media files (ffmpeg wiki)

for i in hoge*.mp4 ; do echo "file '$i'" >> hoge.txt; done  

mp4連結のスクリプト

何度もリストから変換する場合もスクリプトが楽です。

shellなら以下のような感じでリスト(.txt)からファイル名を適当に作って変換できます。

hoge.txtならhoge.mp4のようなファイルを生成します。

#!/bin/sh

while [ $# -ne 0 ];
do 
    case "$1" in
        *.txt)
            if [ -s "$1" ]; then
            files="$files $1"
            fi ;;
    esac
    shift
done

for i in $files
do
    filebase=`basename $i|sed 's/\(.*\)\..*/\1/'`
    mp4file=${filebase}.mp4
    ffmpeg -f concat -safe 0 -i $i -c copy ${mp4file}
done