MP4のチャプター名。

MP4ファイルにあとからチャプターを打つ。 では単純に連番でチャプターを打っていました。スクリプトの方もそれしか考えておらず単純にチャプター名は連番にしていたのですが、TMPEGEnc MPEG Smart Renderer 5では(というかおそらく他の編集ソフトでも)チャプターに名前をつけることができるのがわかりました。

たとえばあるビデオでは、導入部 - オープニングテーマ - サブタイトル - 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 件のコメント:

コメントを投稿

Vimの補完プラグインをインストール。その4

Vimの補完プラグインをインストール。その3 で、 ddc-tabnine が使えそうです、などと書いたのですが、早速やってみました。 まず、tabnineのバイナリを用意しないといけません。がどうにもTabNineのサイトがわかりにくいので、 tabnine-nvim にあるダ...