[技術]mp4エンコードとXBOX360でのmp4ファイル共有

– AVIエンコは気楽だが、XBOX360がAVIコンテナの再生に対応してない。そもそもAVIコンテナ自体がVFRに未対応でもう古い。
– WMVは良くできているが、WinとXBOX360以外の再生に不安がある。エンコーダがバグ多くてイマイチ不安定。
– mp4コンテナならPCからXBOX360、PS3、各種映像機器で再生出来る可能性がある。

とか色んな理由もあったので、AVIからmp4に乗り換えを画策。メインのエンコーダもx264の方がメインになってるし、それ以外は速くて軽い、という理由だけでXvidを使用。あとサイズが4GBを超えるような奴は大抵WMVの2passを使用。

x264の出力には色んな方法があるが、お手軽という理由だけでAviutl+mp4出力プラグインを使用、VFRにも対応してる優れもの。

で、いつもの設定(704x396pixelの画面アスペクト比16:9、ピクセルアスペクト比1:1)でやろうとしたらx264CLIから警告。そーか縦の396pixelって8でも割り切れないんだな…。一応エンコードは出来ちゃうのだが、なんか気持ち悪いのできっちり縦横のpixel数が16の倍数になるように考える。

色々調査した結果、画面アスペクト比16:9の奴なら704×480(元ソースが720x480pixelの場合、横16pixelは左右から8pixel分クリッピング)してピクセルアスペクト比を40:33にするのがいいらしい。つまりはDVDのスクィーズワイド収録と同じである。縦の解像度が増える割にはエンコ後のサイズもそんなに大きくならない模様。

しかしVFRを使用するためにインターレス解除にITを使うとどうもイマイチ好みに合わない。なんだかんだ言ってAviutlの自動24fps解除は良くできてるのだ(万能じゃないけど)、PV3で1440x1080iで取り込んだソースを縮小して自動24fps解除した後にWarpSharpかアンシャープマスクをかけると非常に綺麗になる場合が多いし。

そんな訳でインターレス解除はAviutl側でやるとして、可変フレームレートプラグイン+mp4出力プラグインでVFRエンコをすると「フレームレート判定プラグインが起動されていません」というエラーが出る。調べたらプラグインの作り上、複数プロファイルを持つプロジェクトには可変フレームレート出力は使えないらしい。ううむ。

そもそも一回試して見た限りでは自動可変フレームレート判定はやっぱり無理がある、どうやっても誤判定する箇所が出てくるのだな。

なのでフレーム単位で手動で24/30fpsな部分を抜き出してやろうかとも思ったが、どうもCMカット+手動タイムコード出力を同時にやるのは無理っぽい。一回CMカットしたdvファイルから手動タイムコード出力させればいいんだけど、流石にメドいなコレ。音声も途中で一回分離して後に結合させないとダメだし、まぁこの辺りはバッチ処理でどうにかなるけど。

そんな事をやってるうちに現時点で「どうしてもVFRエンコで無いと困る」ソースのが無い事に気づいたので、この辺はとりあえず諦める事にする。必要になったら手作業でやればなんとかなるって事で。

で、出来上がったmp4ファイルをDNLAサーバに登録すればいいのだが、実はWMP11は動画ファイルに関してWMV以外が共有出来ない仕組みになってる。ファイルそのものはPCでもXBOX360でも再生は出来るのに一体。しかし抜け道はあるもので

– mp4ファイルの拡張子をwmvに変更する(mp4.wmvみたいにしてもOK)
– WMP11を立ち上げると、先ほどのファイルがライブラリに強制登録される。ただしサムネイルも出ないし再生時間も0秒となる。ライブラリから再生は出来るが再生時間が把握できないせいかシークが出来ない。ただし直接mp4ファイルをプレイヤーにD&Dすれば全く問題なし。
– 先ほど拡張子をwmvに変更したmp4ファイルの拡張子をmp4に戻すと、何故かまだ共有が解除されない(!) この状態でXBOX360からPCのファイルを見れば再生可能。サムネイルも出るし再生時間も出るのでシークなどの操作も全て行える。
– 結論:なんでWMP11でmp4を素直に共有させないんだゴルァ。

という訳で、使い勝手が飛躍的に良くなってしまったのでx264なAVIはもう作らない事にする、mp4でいーや。にしてもエンコ道は険しい…。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です