ニコニコ動画のMP4形式について考えてみる.

てってってーPに触発されて書いてみた.

まえがき

ニコニコ動画はSP1になってから,MP4(H.264+AAC)が利用できるようになった.
(プレミアム会員は先行テスターという形で現在利用できる)
それと同時に,ビットレート上限も従来の600kbpsから800kbpsに底上げされ,VP6形式のビットレートも実質向上させることが出来た.
で,肝心のH.264形式なんだけど,ニコニコ的にはこういう仕様に押さえ込んで欲しいらしい.

H.264のプロファイルは Baseline ProfileまたはMain Profileが推奨。

固定フレームレートが推奨。
VFR等の可変フレームレートは正しく処理されない場合があります。

音声AACHE-AAC(44.1kHz/48.0kHz 32kbps〜64kbps推奨)
または AAC-LC(44.1kHz/48.0kHz64kbps〜96kbps推奨) が対応。

FlashPlayer側から見ると,High ProfileもHE-AACv2も再生できるので,再生負荷の側面から考えた縛りということが考えられるだろう.

プロファイルについて

で,じゃぁ実際にプロファイルを下げるにはどうしたら良いのか,というと.
(プロファイルの詳細はWikipediaH.264の項目を参照 AM 04:12追加)
High ProfileからMain Profileに下げるには
・8x8dctを使わないようにする
・partitionsにp8x8を入れない
・カスタムマトリクスを利用しない
以上の三点を行えば,一応Main Profileになるはずです.
さらに,Main ProfileからBaseline Profileに落とすには
・CABACを無効にする
Bフレームを入れない
などが挙げられます.

対策案

正直,CABACを無効にしてパフォーマンスが向上するかと聞かれると,Yesとは言い難い気がします.
(客観的なソース:まるも製作所x264 18 --no-cabac
というか,CABACを無効にしてまでx264を使う義理はそれほど無いんじゃないかと考えたりしてます.
あとはエンコーダ側でできる最大限のオプション(RDOとかMEとかtrellisとか・・・)を駆使して,低いビットレートでもキレイに出せるように努力するとか,そう言う方が重要かもしれません.

意見

個人的にはデブロッキングフィルターの負荷も結構大きいと思うので,そちらを無効にしてパフォーマンスベンチを取ってみるといいかもしれません.
#と,いうかニコニコでH.264高画質ってのは諦めてZoomeとかに行って欲しいなぁー,と思うのは傲慢でしょうかね.