1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Matroskaコンテナを利用してMP4ファイルをより安全に結合する

Last updated at Posted at 2020-05-16

概要

複数の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作成用の中間フォーマットとして活用するのも大いにありかもしれない。

謝辞

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?