« x264の初期ディレイカット機能の概要(あってるか自信なし) | トップページ | AviUtlの拡張編集v0.81cで「シャドー(カメラ制御)」が実装されたようです »

2010年4月 4日 (日)

初期ディレイカットしたMP4をニコニコ動画にアップロードした場合の問題点

さて、前のエントリで説明した
  「拡張x264出力(GUI)の初期ディレイカット機能」
ですが、ニコニコ動画とは相性が悪いようです。

ニコニコ動画では、規定された条件(ビットレートなど)を超えた場合は、
サーバー側でエコノミーモード用のFLV動画を作成するという仕様になっています。
ニコニコ動画まとめWikiによると、通常ならば
  映像: VP6, 320x240(4:3) 352x200(16:9), 約240kbps, 元ファイルのフレームレートそのまま
  音声: MP3, 64kbps, 44.1kHz
というFLVファイルが生成されるようです。

ところが、拡張x264出力(GUI)で初期ディレイカット機能をONにして
エンコードしたMP4を投稿した場合、エコノミーモード用のFLV動画で、
  1.フレームレートが元映像の4倍になる
  2.ビットレートは通常のエコノミー動画(約240kbps)の約1/3~1/4くらいになる
  3.これにより、極端に画質が劣化してしまう
という現象が発生してしまうようです。
ニコニコ動画まとめWikiにも、
  「MP4のエコノミー画質が著しく低下する例
として、情報が記載されています。

実際にそれを試してみました。

こちらの動画をお借りして、「Aviutl 0.99i5+拡張x264(GUI) r1376」を使い、
初期ディレイカットのON/OFF以外の条件は同じにして再エンコードしたMP4を
ニコニコ動画にアップロードし、生成されたエコノミー用FLV動画を見てみました。
その画質を比較した画像がこちらです。(Flavieで再生したものをキャプチャしたものです)

Eco_quality

情報どおり、初期ディレイカットがONになっているとエコノミー用FLVでひどい画質劣化が発生します。
このFLVをMediaInfoや真空波動研で見ると、確かにフレームレートが元動画の4倍、
ビットレートも通常のエコノミー用FLVの40%程度になっています。
ただ、このFLVをFLVExtractにかけたりFLV File Readerで読み込んだりすると、
映像のフレーム数は元動画とあまり変わりませんでした。
(元のMP4は500フレームでしたが、通常のエコノミーFLVでは495フレーム、
 初期ディレイONのエコノミーFLVでは471フレームになっていました。)
実際に4倍のフレームレートになっているならフレーム数も4倍になっているはずです。
もしかしたらNullフレームってやつを使って水増ししてるのかもしれませんがよくわかりません。
なんにせよ、想定外のFLVが生成されてしまうのは確かなようです。
(ちなみに、上の動画は29.97fpsでしたが、25fpsの動画でも同様の現象が発生し、
 こちらはフレームレートが100fpsとなりました。)

さて、以下はこの問題が発生する原因についての考察です。

  1.SMILEVIDEOのヘルプの推奨動画フォーマットを見ると、固定フレームレート(CFR)が推奨されており、
    「可変フレームレート(VFR)は正しく処理されない場合がある」と明記されている。

  2.MP4エンコードの際に初期ディレイカットをONにすると、
    出来上がるMP4はCFRではなくVFRになってしまう。
    MediaInfoで見ると、最小フレームレートは元々のフレームレート、
    最大フレームレートは元のフレームレートの4倍となっている。
      Mp4_vfr_cfr
    前のエントリで述べたように、初期ディレイカットでは最初のほうのフレームを
    通常より4倍早くデコードさせている(ちょっと変な表現ですが)のでVFRになり、
    その部分が最大フレームレート(ちょうど4倍)になるということなのかな?

  3.これにより、エコノミー用FLVの生成がうまくいかず、
      ◎フレームレートはMP4(VFR)の最大フレームレートにする。
      ◎ビットレートは原因はよくわかんないけど通常より減らす。
        (通常の1/4くらいを指定してエンコードしていると考えたほうがいいのかも)
    という処理が行なわれてしまい、激しい画質劣化が発生する。

うーん、あんまり考察になってないっていうか、既出情報しかない気がする。
もうちょっと何か書けそうだと思ったんだけど気のせいだったか。(´・ω・`)

ニコニコ動画側のバグだという声もあるようですが、投稿規程で
VFRが非推奨とされている以上、仕様どおりということになるのかもしれません。

まあ、ニコニコ動画まとめWikiのx264設定でも初期ディレイカットはOFF推奨となってますし、
拡張x264出力(GUI)のr1400以降は初期ディレイカットの機能そのものが
なくなっていますから、今後はこの問題にひっかかってしまう人は少なくなるでしょう。

 
じゃあなんで今更こんな記事書いてんのよって話になりますが、
もともと初期ディレイについて調べ始めたきっかけは、
   「x264 r1379で初期ディレイの扱いが変わり、再生環境によっては不具合が出ることがある」
という話を聞いたからなんですよね。
その過程で初期ディレイカットについても調べざるをえなかったので、まとめてみました。

次のエントリではx264 r1379以降での初期ディレイの扱いなどについて書いてみたいと思います。

|

« x264の初期ディレイカット機能の概要(あってるか自信なし) | トップページ | AviUtlの拡張編集v0.81cで「シャドー(カメラ制御)」が実装されたようです »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1278146/34082287

この記事へのトラックバック一覧です: 初期ディレイカットしたMP4をニコニコ動画にアップロードした場合の問題点:

« x264の初期ディレイカット機能の概要(あってるか自信なし) | トップページ | AviUtlの拡張編集v0.81cで「シャドー(カメラ制御)」が実装されたようです »