DVDからMatroskaへ変換
多くのソフトのチャプター周りの実装がMatroskaの規格に完全には合致していない。
変換方法は大まかにいくと次の手順を踏む。
- "DVD decrypyter"でチャプター情報の取得とVOB化
- "DVD2AVI"で音声の分離とMPEG2のデコード
- "Avisynth"でインターレース解除と24fps化
- "oggenc2"で音声部の圧縮
- "x264"で映像部の圧縮
- "mkvmerge"でチャプター情報・映像・音声のマージ
チャプターに関しては多くのアニメのDVDは一枚のディスクに2〰3話入っているので基本
的に次のような構造にしたい。
+第○話+アバン | +OP | +Aパート | +Bパート | +ED | +次回予告 | +第○話+アバン +OP +Aパート +Bパート +ED +次回予告
Matroskaのチャプターの規格上はこのような構造を持つチャプターも許可されている。つまり"ChapterAtom"要素は子要素として"ChapterAtom"要素を持つことが出来る。
参考:Chapter Specifications | Matroska
しかし多くのソフトはこのことについて何も考えられておらず、"ChapterAtom"要素の子要素の"ChapterAtom"要素は無視される。「知らないタグは無視できる」というMatroskaの拡張性を担う基本原理に従っているのはわかるが、チャプターに関する部分はだいぶ前に固まってるはずなので現在も開発が続いている"MediaPlayerClassic"や"HaaliMediaSplitter"は単に実装が面倒だから捨て置かれてるのか、開発メンバーの誰もがこんな構造を持ったチャプターなんて誰も使わないよねと思っているかのどちらかだろう。
"MediaPlayerClassic"にいたっては複数の"EditionEntry"要素が存在した場合先に読まれたほうしか認識しない。これも規格上は複数存在することが許されている。つまり、以下のようなチャプターも規格どおり認識してほしい。ちなみに"mkvmerge"や"MatroskaProp"は規格どおり認識した。
<?xml version="1.0" encoding="UTF-8"?> <!-- <!DOCTYPE Tags SYSTEM "matroskatags.dtd"> --> <Chapters> <EditionEntry> <EditionFlagHidden>0</EditionFlagHidden> <EditionFlagDefault>0</EditionFlagDefault> <ChapterAtom> <ChapterUID>3164538809</ChapterUID> <ChapterFlagHidden>0</ChapterFlagHidden> <ChapterFlagEnabled>1</ChapterFlagEnabled> <ChapterDisplay> <ChapterString>第01話禁断のクラシックレッド</ChapterString> <ChapterLanguage>jpn</ChapterLanguage> <ChapterCountry>jp</ChapterCountry> </ChapterDisplay> <ChapterTimeStart>00:00:00.000000000</ChapterTimeStart> <ChapterTimeEnd>00:23:39.600000000</ChapterTimeEnd> </ChapterAtom> <ChapterAtom> <ChapterDisplay> <ChapterString>オープニング</ChapterString> <ChapterLanguage>jpn</ChapterLanguage> <ChapterCountry>jp</ChapterCountry> </ChapterDisplay> <ChapterUID>2792984462</ChapterUID> <ChapterFlagHidden>0</ChapterFlagHidden> <ChapterFlagEnabled>1</ChapterFlagEnabled> <ChapterTimeStart>00:00:00.000000000</ChapterTimeStart> <ChapterTimeEnd>00:01:29.933000000</ChapterTimeEnd> </ChapterAtom> <ChapterAtom> <ChapterUID>2651518366</ChapterUID> <ChapterFlagHidden>0</ChapterFlagHidden> <ChapterFlagEnabled>1</ChapterFlagEnabled> <ChapterDisplay> <ChapterString>Aパート</ChapterString> <ChapterLanguage>jpn</ChapterLanguage> <ChapterCountry>jp</ChapterCountry> </ChapterDisplay> <ChapterTimeStart>00:01:29.933000000</ChapterTimeStart> <ChapterTimeEnd>00:11:52.267000000</ChapterTimeEnd> </ChapterAtom> <ChapterAtom> <ChapterUID>525285053</ChapterUID> <ChapterFlagHidden>0</ChapterFlagHidden> <ChapterFlagEnabled>1</ChapterFlagEnabled> <ChapterDisplay> <ChapterString>Bパート</ChapterString> <ChapterLanguage>jpn</ChapterLanguage> <ChapterCountry>jp</ChapterCountry> </ChapterDisplay> <ChapterTimeStart>00:11:52.267000000</ChapterTimeStart> <ChapterTimeEnd>00:21:28.733000000</ChapterTimeEnd> </ChapterAtom> <ChapterAtom> <ChapterUID>3209428357</ChapterUID> <ChapterFlagHidden>0</ChapterFlagHidden> <ChapterFlagEnabled>1</ChapterFlagEnabled> <ChapterDisplay> <ChapterString>エンディング</ChapterString> <ChapterLanguage>jpn</ChapterLanguage> <ChapterCountry>jp</ChapterCountry> </ChapterDisplay> <ChapterTimeStart>00:21:28.733000000</ChapterTimeStart> <ChapterTimeEnd>00:23:08.600000000</ChapterTimeEnd> </ChapterAtom> <ChapterAtom> <ChapterUID>1793320382</ChapterUID> <ChapterFlagHidden>0</ChapterFlagHidden> <ChapterFlagEnabled>1</ChapterFlagEnabled> <ChapterDisplay> <ChapterString>次回予告</ChapterString> <ChapterLanguage>jpn</ChapterLanguage> <ChapterCountry>jp</ChapterCountry> </ChapterDisplay> <ChapterTimeStart>00:23:08.600000000</ChapterTimeStart> <ChapterTimeEnd>00:23:39.600000000</ChapterTimeEnd> </ChapterAtom> <ChapterAtom> <ChapterDisplay> <ChapterString>第02話マンダリンオレンジの再会</ChapterString> <ChapterLanguage>jpn</ChapterLanguage> <ChapterCountry>jp</ChapterCountry> </ChapterDisplay> <ChapterUID>2037072021</ChapterUID> <ChapterTimeStart>00:23:39.600000000</ChapterTimeStart> <ChapterFlagHidden>0</ChapterFlagHidden> <ChapterFlagEnabled>1</ChapterFlagEnabled> </ChapterAtom> <ChapterAtom> <ChapterUID>1407724166</ChapterUID> <ChapterFlagHidden>0</ChapterFlagHidden> <ChapterFlagEnabled>1</ChapterFlagEnabled> <ChapterDisplay> <ChapterString>オープニング</ChapterString> <ChapterLanguage>jpn</ChapterLanguage> <ChapterCountry>jp</ChapterCountry> </ChapterDisplay> <ChapterTimeStart>00:23:39.600000000</ChapterTimeStart> <ChapterTimeEnd>00:25:09.533000000</ChapterTimeEnd> </ChapterAtom> <ChapterAtom> <ChapterUID>496716946</ChapterUID> <ChapterFlagHidden>0</ChapterFlagHidden> <ChapterFlagEnabled>1</ChapterFlagEnabled> <ChapterDisplay> <ChapterString>Aパート</ChapterString> <ChapterLanguage>jpn</ChapterLanguage> <ChapterCountry>jp</ChapterCountry> </ChapterDisplay> <ChapterTimeStart>00:25:09.533000000</ChapterTimeStart> <ChapterTimeEnd>00:34:00.000000000</ChapterTimeEnd> </ChapterAtom> <ChapterAtom> <ChapterUID>74534021</ChapterUID> <ChapterFlagHidden>0</ChapterFlagHidden> <ChapterFlagEnabled>1</ChapterFlagEnabled> <ChapterDisplay> <ChapterString>Bパート</ChapterString> <ChapterLanguage>jpn</ChapterLanguage> <ChapterCountry>jp</ChapterCountry> </ChapterDisplay> <ChapterTimeStart>00:34:00.000000000</ChapterTimeStart> <ChapterTimeEnd>00:45:08.333000000</ChapterTimeEnd> </ChapterAtom> <ChapterAtom> <ChapterUID>2578393017</ChapterUID> <ChapterFlagHidden>0</ChapterFlagHidden> <ChapterFlagEnabled>1</ChapterFlagEnabled> <ChapterDisplay> <ChapterString>エンディング</ChapterString> <ChapterLanguage>jpn</ChapterLanguage> <ChapterCountry>jp</ChapterCountry> </ChapterDisplay> <ChapterTimeStart>00:45:08.333000000</ChapterTimeStart> <ChapterTimeEnd>00:46:48.200000000</ChapterTimeEnd> </ChapterAtom> <ChapterAtom> <ChapterUID>240841367</ChapterUID> <ChapterFlagHidden>0</ChapterFlagHidden> <ChapterFlagEnabled>1</ChapterFlagEnabled> <ChapterDisplay> <ChapterString>次回予告</ChapterString> <ChapterLanguage>jpn</ChapterLanguage> <ChapterCountry>jp</ChapterCountry> </ChapterDisplay> <ChapterTimeStart>00:46:48.200000000</ChapterTimeStart> </ChapterAtom> <EditionUID>3949384081</EditionUID> </EditionEntry> <EditionEntry> <EditionFlagHidden>0</EditionFlagHidden> <EditionFlagDefault>0</EditionFlagDefault> <EditionUID>2577940639</EditionUID> <ChapterAtom> <ChapterDisplay> <ChapterString>第01話禁断のクラシックレッド</ChapterString> <ChapterLanguage>jpn</ChapterLanguage> <ChapterCountry>jp</ChapterCountry> </ChapterDisplay> <ChapterUID>1220414121</ChapterUID> <ChapterAtom> <ChapterDisplay> <ChapterString>オープニング</ChapterString> <ChapterLanguage>jpn</ChapterLanguage> <ChapterCountry>jp</ChapterCountry> </ChapterDisplay> <ChapterFlagHidden>0</ChapterFlagHidden> <ChapterFlagEnabled>1</ChapterFlagEnabled> <ChapterUID>2544905882</ChapterUID> <ChapterTimeStart>00:00:00.000000000</ChapterTimeStart> <ChapterTimeEnd>00:01:29.933000000</ChapterTimeEnd> </ChapterAtom> <ChapterAtom> <ChapterDisplay> <ChapterString>Aパート</ChapterString> <ChapterLanguage>jpn</ChapterLanguage> <ChapterCountry>jp</ChapterCountry> </ChapterDisplay> <ChapterFlagHidden>0</ChapterFlagHidden> <ChapterFlagEnabled>1</ChapterFlagEnabled> <ChapterUID>1481411200</ChapterUID> <ChapterTimeStart>00:01:29.933000000</ChapterTimeStart> <ChapterTimeEnd>00:11:52.267000000</ChapterTimeEnd> </ChapterAtom> <ChapterAtom> <ChapterDisplay> <ChapterString>Bパート</ChapterString> <ChapterLanguage>jpn</ChapterLanguage> <ChapterCountry>jp</ChapterCountry> </ChapterDisplay> <ChapterFlagHidden>0</ChapterFlagHidden> <ChapterFlagEnabled>1</ChapterFlagEnabled> <ChapterUID>14280125</ChapterUID> <ChapterTimeStart>00:11:52.267000000</ChapterTimeStart> <ChapterTimeEnd>00:21:28.733000000</ChapterTimeEnd> </ChapterAtom> <ChapterAtom> <ChapterDisplay> <ChapterString>エンディング</ChapterString> <ChapterLanguage>jpn</ChapterLanguage> <ChapterCountry>jp</ChapterCountry> </ChapterDisplay> <ChapterFlagHidden>0</ChapterFlagHidden> <ChapterFlagEnabled>1</ChapterFlagEnabled> <ChapterUID>3463074234</ChapterUID> <ChapterTimeStart>00:21:28.733000000</ChapterTimeStart> <ChapterTimeEnd>00:23:08.600000000</ChapterTimeEnd> </ChapterAtom> <ChapterAtom> <ChapterDisplay> <ChapterString>次回予告</ChapterString> <ChapterLanguage>jpn</ChapterLanguage> <ChapterCountry>jp</ChapterCountry> </ChapterDisplay> <ChapterFlagHidden>0</ChapterFlagHidden> <ChapterFlagEnabled>1</ChapterFlagEnabled> <ChapterUID>10459018</ChapterUID> <ChapterTimeStart>00:23:08.600000000</ChapterTimeStart> <ChapterTimeEnd>00:23:39.600000000</ChapterTimeEnd> </ChapterAtom> <ChapterFlagHidden>0</ChapterFlagHidden> <ChapterFlagEnabled>1</ChapterFlagEnabled> <ChapterTimeStart>00:00:00.000000000</ChapterTimeStart> <ChapterTimeEnd>00:23:39.600000000</ChapterTimeEnd> </ChapterAtom> <ChapterAtom> <ChapterDisplay> <ChapterString>第02話マンダリンオレンジの再会</ChapterString> <ChapterLanguage>jpn</ChapterLanguage> <ChapterCountry>jp</ChapterCountry> </ChapterDisplay> <ChapterUID>3120368298</ChapterUID> <ChapterAtom> <ChapterDisplay> <ChapterString>オープニング</ChapterString> <ChapterLanguage>jpn</ChapterLanguage> <ChapterCountry>jp</ChapterCountry> </ChapterDisplay> <ChapterFlagHidden>0</ChapterFlagHidden> <ChapterFlagEnabled>1</ChapterFlagEnabled> <ChapterUID>966343847</ChapterUID> <ChapterTimeStart>00:23:39.600000000</ChapterTimeStart> <ChapterTimeEnd>00:25:09.533000000</ChapterTimeEnd> </ChapterAtom> <ChapterAtom> <ChapterDisplay> <ChapterString>Aパート</ChapterString> <ChapterLanguage>jpn</ChapterLanguage> <ChapterCountry>jp</ChapterCountry> </ChapterDisplay> <ChapterFlagHidden>0</ChapterFlagHidden> <ChapterFlagEnabled>1</ChapterFlagEnabled> <ChapterUID>1682156428</ChapterUID> <ChapterTimeStart>00:25:09.533000000</ChapterTimeStart> <ChapterTimeEnd>00:34:00.000000000</ChapterTimeEnd> </ChapterAtom> <ChapterAtom> <ChapterDisplay> <ChapterString>Bパート</ChapterString> <ChapterLanguage>jpn</ChapterLanguage> <ChapterCountry>jp</ChapterCountry> </ChapterDisplay> <ChapterFlagHidden>0</ChapterFlagHidden> <ChapterFlagEnabled>1</ChapterFlagEnabled> <ChapterUID>906068354</ChapterUID> <ChapterTimeStart>00:34:00.000000000</ChapterTimeStart> <ChapterTimeEnd>00:45:08.333000000</ChapterTimeEnd> </ChapterAtom> <ChapterAtom> <ChapterDisplay> <ChapterString>エンディング</ChapterString> <ChapterLanguage>jpn</ChapterLanguage> <ChapterCountry>jp</ChapterCountry> </ChapterDisplay> <ChapterFlagHidden>0</ChapterFlagHidden> <ChapterFlagEnabled>1</ChapterFlagEnabled> <ChapterUID>2952262820</ChapterUID> <ChapterTimeStart>00:45:08.333000000</ChapterTimeStart> <ChapterTimeEnd>00:46:48.200000000</ChapterTimeEnd> </ChapterAtom> <ChapterAtom> <ChapterDisplay> <ChapterString>次回予告</ChapterString> <ChapterLanguage>jpn</ChapterLanguage> <ChapterCountry>jp</ChapterCountry> </ChapterDisplay> <ChapterFlagHidden>0</ChapterFlagHidden> <ChapterFlagEnabled>1</ChapterFlagEnabled> <ChapterUID>1747117956</ChapterUID> <ChapterTimeStart>00:46:48.200000000</ChapterTimeStart> </ChapterAtom> <ChapterFlagHidden>0</ChapterFlagHidden> <ChapterFlagEnabled>1</ChapterFlagEnabled> <ChapterTimeStart>00:23:39.600000000</ChapterTimeStart> </ChapterAtom> </EditionEntry> </Chapters>