ドラッグ&ドロップだけで済むmp4の無劣化結合

最近DJI Osmo Pokcetと言うのを買いました。先月発売されまして、4.5万円ほどだったのでちょっと手を出すのに躊躇していましたが、クーポンで安くなってて36000円ほどで買えたので買ってしまいました。

で、動画で作られるデータはmp4ですが(デフォルトはmovだったと思いますが)、長時間の撮影の場合は約4GBでファイルが分割されます。これをPCで取り込んだ場合、連続で見たいときはファイルを結合(連結)する必要があります(繋がなくても再生する方法もありますけど割愛)。mp4を連結するツールは普段なら私はmp4box.exeと言うコマンドラインで使うツールを使うのですけど、mp4boxのフロントエンド(GUIで操作できるようにする支援ツール)のunitemovieやYambと言うツールを使って連結すると何故かトータルの時間がおかしくなってしまいました。

mp4boxの引数を変えれば大丈夫なのかも知れないけど勉強する気にもなれないのでffmpeg.exeを使うことにしました。こっちだとうまくいきました。いろいろ試してはいませんけど。他のツールで繋ぐとつなぎ目の音がとぎれるとかって話もありますが、この方法だと大丈夫かもしれませんが、全然数こなしてないのでダメかも(追記 osmo pocketの問題のようで元のがとぎれてるからどうしようもないですね)。

で、ffmpegってなんやとか、このffmpeg使った結合の解説は他にもサイトがあるので詳細は割愛しますが(と言うか私もそう言うサイトを参考にしてます)、files.txtをいちいち手作業で編集しなくても連結したいファイルを複数選択してドラッグ&ドロップするだけで連結できるようなバッチファイルを作ってみました。バッチファイルを書くこと自体もド素人ですけど使えているので公開します。

ffmpegはパスを通すかフルパスで指定してください。やり方としてはエクスプローラでmp4のデータを複数指定してこのバッチファイルのアイコンにドラッグ&ドロップするだけです。

バッチファイルをデスクトップに置いとくのでも良いし、置くのはバッチファイルのショートカットでも構いません。

mp4のデータがある同じフォルダに一つ目のファイル名の頭に_が付いたファイル名で作られます。

ドラッグ&ドロップするときはファイルの順番がおかしくならないように注意すること。これ、エクスプローラだと多少の慣れが必要です。私は別のファイル管理ツールを使ってるので間違えませんけど。files.txtは作業後に消去するようにバッチファイルに書いても構いませんが、連結の順番が正しいかの確認用に残してあります。files.txtはバッチファイル起動直後に作られるので連結が終わる前に確認できます。

xxx.bat と言う名前のテキストファイルを作って以下をコピペして保存してください。ってわざわざ説明しても仕方ないか。

@echo off
%~d1
cd "%~p1"
type nul > ./files.txt

SET FILEMEI=%~n1

:start
IF "%~1"=="" GOTO ffmpegstart
IF "%~x1" == ".MP4" GOTO add
IF "%~x1" == ".mp4" GOTO add
GOTO next

:add
echo file '%~1' >> ./files.txt

:next
SHIFT
GOTO start

:ffmpegstart
ffmpeg.exe -safe 0 -f concat -i %~p1files.txt -c:v copy -c:a copy -map 0:v -map 0:a %~p1_"%FILEMEI%".mp4

そうそう、素性の違うファイル同士の結合はたぶんうまくいかないと思いますので注意してください。試したことないですけど。