■DLNAで再生可能性が高いmp4を作成するメモ
AndroidやUbuntuのDLNA環境で再生不可能なmp4が多い(seek情報がないとかストリーミングに最適化されてないとかエラーが出る)ため、なんとか再生できないかと試行錯誤したメモ。(作成実験したのはMac環境)結果としては成功。GalaxyTabやXBMCで再生可能なmp4が増えた。
■MP4Boxでの調査
再生ができるmp4と再生できないmp4をいろいろと比較してみたが、QTやVLCのインフォメーションから見える情報では判別がつかないので、mp4系のツールでよく利用されるMP4Boxで調べてみる。MP4BoxはWindows用バイナリが有名だが、Mac OSX 10.5以降用に開発版が提供されているので、以下のURLからダウンロードして利用する。
GPAC and Mac OS X
http://perso.telecom-paristech.fr/~lefeuvre/GPAC/OSX/
dmgファイルをダウンロードして中身のOsmo4をアプリケーションフォルダにコピーする。ターミナルから以下のコマンドを実行する。
$ sudo mkdir /opt
$ sudo mkdir /opt/local/
$ sudo mkdir /opt/local/lib
$ sudo cp /Applications/Osmo4.app/Contents/MacOS/lib/libjs.dylib /opt/local/lib/
$ cd /Applications/Osmo4.app/Contents/MacOS/
$ ./MP4Box -info /path/to/調べたいmp4ファイル.mp4
MP4Boxの使い方は他のページを参照してもらうとして、このツールでも再生可能なものとそうでないものの違いが明確にはわからなかった。
■HandBrake Web Optimizedにチェック
エラーの内容から見て、DSSなどで昔ストリーミングに必要と言われていたヒントトラックが足りないのかと思ったがそうではないらしい。他に思いついたのが、普段mp4変換で利用しているHandBrakeの「Web Optimized」のチェックボタン。ひょっとしてこれが使えるかもと思って、再生できないmp4を「Web Optimized」チェック付きで変換。それをDLNAサーバ経由(Playback1.7.4)で再生実験したところ、以前GalaxyTabの標準プレイヤーで再生できなかった「H) 480×272 H.264 AAC mp4」と「I) 426×320 H.264 AAC mp4」のファイルも再生できるようになった。またUbuntuでもXBMCやTotemで再生できなかったmp4が再生できるようになった(これはまた別途記事にする予定)。どうやら、この設定が当りらしい。
■Permuteで確認
常用しているPermuteにはMP4変換時に「Web Optimized」に当る設定がないため、念のため改めて変換して試したところやはりエラーになって再生ができない。そもそもWeb Optimizeに対応していないのかと思ったら、変換設定自体に「Web Optimization」という項目があり、動画の再エンコード無しに「Web Optimization」が行われるらしい。そこで再生できなかったmp4ファイルに「Web Optimization」設定での変換を実行してみると極短時間で元ファイルと同じサイズのファイルが生成され、そのファイルはDLNA経由で適切に再生することができるようになった。
■まとめ
結論としてはmp4ファイルについては必ずWeb Optimizedで作成すること。付いていないファイルはPermuteで「Web Optimization」設定の変換を行う。これでAndroidやUbuntu環境でのDLNA再生が高い確率で可能になる。(再生アプリやDLNAサーバによって差異がありそうなので、敢えて可能性が高いという表現にしています)
※Web Optimizedは、ファイルのMETAデータを含むMOOV Atomという本来ファイルの最後にある情報を、ファイルの先頭に置くための処理だそうです。このMETAデータが読めるまで再生ができないため、ファイルの最後のあるままだと多くの場合エラーになってしまうようです。ソースはこちら。今回はPermuteを使っていますが、QTIndexSwapperというAIRアプリでも同様の処理ができるようです(未検証)。