概要
複数のMP4ファイル (H.264 + AAC) を結合します。
また再エンコードは行わず、動画の品質の劣化無く結合します。
※ 複数の動画ファイルは、解像度、コーデック、アス比などが同じで有ることが前提です。
問題としている課題
(課題1) 結合後のmp4で音ズレが発生する
結合方法についてはffmpegやmp4boxを用いた方法が簡単に見つかる。
しかし、AndroidやKindle Fireなどで再生すると音ズレが起きてしまう。
HWデコーダーで発生するため、プラットフォームの相性より、データ異常の方が可能性は高いと考える。
(課題2) チャプターを維持したまま結合が出来ない
MP4のチャプターについては微妙な位置づけだが。
既にチャプターのある動画同士を結合するのであれば、
せめてチャプターが維持されていると嬉しい。
しかし、ffmpegで結合した場合、チャプターは無くなってしまう。
対策
Matroskaコンテナを用いて動画の修正を行う。
MatroskaコンテナはMP4で主に使用されるH.264とAACをサポートしているため、
品質の劣化なく情報の修正が可能。
また、同様の発想で、FLVをMKVで結合してMP4化など、他のコンテナにも応用可能。
利用ツール
アプリ | 用途 |
---|---|
ffmpeg | コンテナ変換 (mkv ⇔ mp4,flv) |
mkvmerge (MKVToolNix) | 動画の結合、チャプター編集など |
手順
(手順1) MP4をMatroskaコンテナに変換
Matroskaで作業をするためにコンテナを変換します。
ffmpeg -i "part_001.mp4" -f matroska -vcodec copy -acodec copy "part_001.mkv"
ffmpeg -i "part_002.mp4" -f matroska -vcodec copy -acodec copy "part_002.mkv"
ffmpeg -i "part_003.mp4" -f matroska -vcodec copy -acodec copy "part_003.mkv"
(手順2) MKVを結合
mkvmerge "part_001.mkv" + "part_002.mkv" + "part_003.mkv" -o "all.mkv"
(手順2.1) チャプター修正など修正作業
MKVToolNixGUIでMKVの情報の修正が行なえる。
結合によりチャプターに振られている連番の修正を行いたいなどあれば、修正を行う。
またその他、なにかあればMKVの状態で。
(手順3) MKVをMP4にコンテナ変換
ffmpeg -i "all.mkv" -vcodec copy -acodec copy -f mp4 "all.mp4"
余談
MatroskaはMP4に比べて編集用のツールが充実している様に思われる。
チャプター周りもMP4では実用的な編集ソフトが見つけられなかった。
H.264+AACの
MKVをMP4作成用の中間フォーマットとして活用するのも大いにありかもしれない。
謝辞
- ffmpeg
https://www.ffmpeg.org/ - MKVToolNix
https://mkvtoolnix.download/