たとえばあるビデオでは、導入部 - オープニングテーマ - サブタイトル - Aパート - アイキャッチ - Bパート - エンディングテーマ - 次回予告 などというふうに別れているとき、その説明部分まで含めてチャプターを打つことができるようです。
ちょっと手元のソースで試しにやってみたら、次のような感じになりました。
チャプター名がない場合:
0 300 2100
チャプター名がある場合:
0 300 #Name=オープニングテーマ 2100 #Name=Aパート
そしてそれをエンコード時に合成してやると…なんとVLC Media Playerでは文字化けしてしまいました。一方、MPC BEではちゃんと読めます。
文字エンコーディングの問題かもしれないと思い、チャプターファイルをUTF-8に変えてから再度合成してみます。
今度はVLCでもMPC BEでもちゃんとチャプターリストが日本語で表示されました。どうやらチャプター名はUTF-8でつければいいようです。
ちなみに、手元にあるプレイヤーソフトのCyberlink PowerDVD 17ではこのMP4のチャプターは扱えないらしいことがわかりました。さらにはChromeCastでもチャプタージャンプはできないようです。もしかしてチャプターというのは規格化されていないのでしょうか。
不思議に思ってPowerDVDで市販BDを再生してみると、ちゃんとチャプタージャンプできます。PowerDVDからChromeCastに再生させたらテレビのリモコンからチャプタージャンプできるのか試そうと思ったら、どうやら市販BDはChromeCastへ飛ばせないようです。DLNA(DTCP-IP)とかAACSとかの関係なんでしょうか。
余談ですが、ついでに調べてみたらDLNAは2017年1月5日に解散しているようです。また "ChromeCast DTCP-IP" で検索しても、ピンとくるものはなさそうなので、やっぱりその関係でしょうか。
ともあれ、TMSR5でチャプターの keyframe ファイルを作成したら、それをUTF-8でチャプター名も入った chapter.txt ファイルに変換してやればVLCでもMPC BEでもチャプター名が扱えそうです。
ということで、以前に作ったmakechap.pyを改変中です。
一方で、mp4chapsというツールを見つけました。mp4v2というツール群に入っているそうです。バイナリもあるようですが、リポジトリから最新(といっても2015年のようですが)をダウンロードしてコンパイルするのがいいかと思います。
それからMP4のチャプターファイルについてというページでチャプターファイルの形式について触れられています。
00:00:00.000 チャプター名1の形式と
CHAPTER01=00:00:00.000の形式があるようです。
CHAPTER01NAME=チャプター名1
現在のスクリプトは後者の形式で出力するようにしていて、これでちゃんとチャプターが打てているのでこの方向で考えてみます。
0 件のコメント:
コメントを投稿