Aviutlでx264GUIを使用したh264mp4エンコードをする場合の注意点について
ややこしいところははしょってTips的にまとめ。自分もよくわかっているかと言えばあやしいので…。詳しい仕組み等を知りたい方は用語等からいろいろ調べて頭がパーンになるといいよ!*1
MMDから出力したAVIなどのRGBソースのaviを前提とします。
画像でmp4エンコの設定を上げ忘れて通常のビットレート劣化もしてますがまあ比較としては問題がないので。
予備知識として
x264でのエンコードはYUV4:2:0という色空間でなければなりません。
これはMMDからのAvi出力等でのRGB形式とは違うものであり、変換が必要になります。そのあたりで劣化が生じるの生じないの、といったあたりが絡んできます。
ダウンサンプリング法について
RGB→YUVに変換するときにサンプリングという操作がされますが、その方法にもいくつかあります。*2
■Aviutlでそのままmp4化した場合
文字のにじみ等が出ます。
そこでAviUtl プラグイン フィルタ by うえぽんで配布されている「UVダウンサンプリングフィルタ」を使うと、他の方法も使うことができます。*3
フィルタにYUY2とYUV420がありますが、最終的にはYUV420になるのでYUV420でいいです。(実はそこまで検証していないですが、YUY2でも出力結果の違いはわからなかった)
■lanczos1
にじみ等は出なくなりました。
lanczos処理は、平均に比べて水平垂直線がボヤけるような感じになります。が、SmallConfettiやZigZagはよりソースに近いようにも。ハッキリと「どちらがよい」とは言えないと思います。
また、RGB→YV12の変換で発生するチラツキの軽減 | うえぽんSW局(旧)の記事の内容や、mp4動画の再生チェックについて - えむえむでえで案内したようにflashplayerはデコード時に補間がされず境界線がギザギザするので、lanczosでボヤカす方が最終的にはよい場合もあるか?と思ったりしています。このあたりはソースの傾向とかも合わせて色々試してみるとよいでしょう。*4
ニコ動等、ブラウザ上のflashplayerで見た際に色味が変わる現象について
これは結構あると思われる。
2010/12/27現在ではflashplayerの変換式はまた設定が変わっているらしく、下記のエンコード設定をしなくとも変色する現象は出ないようです
■MMD出力をAviutlで読み込んだソース
■mp4でエンコし、ブラウザのflashplayerで見ると変色
ミクの髪色が青っぽく。緑が一番影響を受けるらしく、こうした色味になっている動画もいくつか見られる。
RGB⇔YUVの変換式の係数というのがいくつかあるのですが、AviutlでBT.601で変換されたものがBT.709で受け取られているのが原因です。*5
そこで、「どの変換係数を使っているのかを指定した情報」を入れてやります。
変色の対策
Aviutlのx264GUIの設定、「コマンド」タブの白い枠のところに
--colormatrix bt470bg
と入れる。
*1:参考リンク:http://x264.tobinaka.com/index.php?Home, 【YUY2 YV12】色空間スレ【RGB24 32】
*2:参考:http://blog.livedoor.jp/tobinaka/archives/1252941.html
*3:余談だけど「エッジをぼかすフィルタ」もMMDに適用すると結構使えるフィルタ
*4:UtvideoCodecのYUY2やAviSynthのConvertToYV12等は「平均」と同じ方法の処理を行っているらしい
*5:Aviutlでは基本的にBT.601で処理されているがflashplayer10のデフォルトはBT.709。形式情報を付加しておかないと誤った処理がされる。参考:http://x264.tobinaka.com/index.php?--colormatrix
*6:調べた範囲ではニコエンコにはこの指定情報が入っているので変色しない。図書館セットには入っていないので変色するが、もともとのaviソース形式にも影響されるものなのでプリセットが常にいいとも限らないからなどの理由があると思う。