さんうーのメモ帳

チラシの裏と同意、思いつくがまま書く。たまに矛盾。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

x264各プロファイル毎のエンコードテスト。

・エンコードテスト

※この記事には暗号が多く含まれるので、こちらも合わせて閲覧してください。
ド素人のテストなので、この記事には偏見や、独断、間違った部分が多く含まれている恐れがあります。


WS000000_20100421195845.jpg
x264にあるプロファイルごとにエンコードしたらどういう結果になるのか、また、各プロファイルはどれぐらいまで効果があるのか、比較してみました。

・準備
様々な、シュチュエーションが詰まった、ASD-Lifeforceのデモを録画し、編集し一部分を各プリセット設定でエンコード(800kbpsマルチパス2passエンコード,1分半)。

・静止画でチェック。
本来は、動画でチェックするものだとは思うのだけど、うまい比較方法が思いつかなかったので、4場面の同タイミングの静止画にしてチェックしてみました。

※FC2の制限で500KB以下のファイルしか、上げられませんでした。(JPGの圧縮で劣化してます。)
※なので、後日分割して上げ直すかもしれません。

速度プリセット比較
preset01.jpgpreset02.jpgpreset03.jpgpreset04.jpg

ultrafast: 全体的に酷いブロックノイズ。ちょっと観るに耐えないかも。
veryfast: 最も早く、エンコードするならこの辺りが妥当。テクスチャーの輪郭はぶれぶれ、色味も再現しづらい様子。
faster:
fast: フォッグ(霧)のブロックノイズが目立ちにくくなる。
medium: 色やテクスチャーの輪郭はこの辺りで再現。
slow: 再生負荷は高めだけど、ほとんどのPCで再生出来る設定。
slower: テクスチャーのひび割れ表現を再現したり、ブロックノイズが目立ちにくくなったりする。
veryslow: 全体的に綺麗だけど、再生負荷が凄い。


全体的に設定を高設定にすると、ブロックノイズが消え、輪郭がちゃんと再現される様子。
速度プリセットは再生負荷、エンコード時間等々を考慮して決めるのが良さそう。
個人的にはslower以下が良いかもしれない。


チューニングプリセット比較
tune01.jpgtune02.jpgtune03.jpgtune04.jpg

film: 写実系の場面に強く、テクスチャーの質感などを一番再現していた。ただし、輪郭の周りにボツボツとしたノイズが発生しやすい。
animation: 平面系の場面に強い、ただし、細かい点は消え、テクスチャーの質感は全体的にのっぺりとした感じに、、、。
grain: 忠実度を上げる関係上、全体的にどうしても劣化しがち。細かい点などの再現度が高く、夜空等々には強そうな印象。
psnr: 全体的にブロックノイズが発生しやすい。
ssim: psnrよりもブロックノイズを目立たなくした感じに。高ビットレートなら一番綺麗かもしれない。
fastdecode: 評価不要。デコード(再生)負荷を一番小さくした設定。その代わり画質が犠牲になっています。
touhou: animationとgrainの中間のような感じ。開発者が東方好きでこんな設定があるんだそうな。


どれもこれも、一長一短という感じ。
写実系で背景のブロックノイズが気になるならfilm。
アニメーション系で輪郭を重視したい場合はanimation。
夜空や細かいノイズや点を強調したいならgrain。
忠実度重視で輪郭強調、ブロックノイズ削減等。余計な処理を加えないならpsnr。
高ビットレートならssim。
再生負荷を下げるならfastdecode。
段幕ゲーをエンコードしたいならtouhou。
と言う感じで適材適所で使っていくのが一番良いのかもしれません。


・動画でチェック
1350kbps、veryslow+psnrプロファイルで結合エンコードした動画はこちら。

1分半ごとにプロファイルの動画が変わります。

【高負荷注意】エンコードテスト、速度プロファイル比較。
http://zoome.jp/hawkgriffon/diary/45

【高負荷注意】エンコードテスト、チューニングプロファイル比較。
http://zoome.jp/hawkgriffon/diary/46


・各プロファイルについて

速度のプリセットについて

ultrafast:超速、デコード(再生時)の負荷も低い設定。画質は最低。

  ref 1, scenecut 0, no-deblock, no-cabac, bframes 0, b-adapt 0,partitions none, no-8x8dct, me dia, subme 0, aq-mode 0, no-mixed-refs, trellis 0, no-mbtree, weightp 0, no-weightb
  参照距離1, シーンカット閾値0, デブロックフィルタOFF, CABAC OFF, Bフレームの最大連続数0, 適応的Bフレーム挿入0, 8x8 離散コサイン変換OFF, 動き予測アルゴリズムDiamond Search【"dia"】(精度低), サブピクセル精度0, VAQ 無効, 混合参照OFF, RD最適化None, mb-treeレート制御OFF, 重み付け予測(BフレームOFF Pフレーム0)


superfast:早くエンコしたいならultrafastよりもこっちがオススメ。

 partitions i8x8,i4x4, me dia, subme 1, ref 1, no-mixed-refs, trellis 0, no-mbtree, no-weightb, weightp 0
 8x8 イントラ動き補償ON, 4x4 イントラ動き補償ON, 動き予測アルゴリズムDiamond Search【"dia"】(精度低), サブピクセル精度1, 参照距離1, 混合参照OFF, RD最適化None, mb-treeレート制御OFF, 重み付け予測(BフレームOFF Pフレーム0)


veryfast:

  no-mixed-refs, ref 1, subme 2, no-mbtree, trellis 0, weightp 0
  混合参照OFF, 参照距離1, subme 1, mb-treeレート制御OFF, RD最適化None, 重み付け予測(Pフレーム0)


faster:

  no-mixed-refs, ref 2, subme 4, weightp 1, rc-lookahead 20
  混合参照OFF, 参照距離2, サブピクセル精度4, 重み付け予測(Pフレーム1)


fast:

  ref 2, subme 6, rc-lookahead 30
  参照距離2, サブピクセル精度6


medium:デフォルト

slow:デコード(再生)負荷を考えると、高画質でアップロードするならこの辺が最適かも。

  me umh, subme 8, ref 5, b-adapt 2, direct auto, rc-lookahead 50
  動き予測アルゴリズムUneven Multi-Hexagon search【"umh"】(精度中), サブピクセル精度8, 参照距離5, 適応的Bフレーム挿入 完全, 動き予測方式Auto


slower:デコード(再生)負荷高め、ロースペックだとカクカクになるかも。

  me umh, subme 9, ref 8, b-adapt 2, direct auto, partitions all, trellis 2, rc-lookahead 60
  動き予測アルゴリズムUneven Multi-Hexagon search【"umh"】(精度中), サブピクセル精度9, 参照距離8, 適応的Bフレーム挿入 完全, 動き予測方式Auto, マクロブロックタイプ全使用, RD最適化All MB Encode


veryslow:最高画質。アップロードには向かない。

  me umh, subme 10, merange 24, ref 16, b-adapt 2, direct auto, partitions all, trellis 2, bframes 8, rc-lookahead 60
  動き予測アルゴリズムUneven Multi-Hexagon search【"umh"】(精度中), サブピクセル精度10, ベクトル探索範囲 24, 参照距離16, 適応的Bフレーム挿入 完全, 動き予測方式Auto, マクロブロックタイプ全使用, RD最適化All MB Encode, Bフレームの最大連続数8



チューニングのプリセットについて

film:実写(もしくはそれっぽいCG等)映像向け。デブロックフィルターは-に動かすとシャープに、+に動かすとぼかしに。

  deblock -1:-1, psy-rd :0.15
  デブロックフィルタ -1:-1, Psy-RD :0.15


animation:アニメ向け。参照距離を弄る設定なので、再生負荷が上がるかも。

  ref 各プリセット値が1以上の場合2倍(最大16)、プリセット値が0の場合は1に変更, deblock 1:1, psy-rd 0.4:, aq-strength 0.6, bframes 各プリセット+2(最大16)
  参照距離を2倍に(最大16、0の場合は1), デブロックフィルタ 1:1, Psy-RD 0.4:, Adaptive Quantization強度;0.6,
bframesの各設定に+2(最大16)


grain: 細かい粒子が漂っているような映像向け(アニメの回想シーンとか)。基本的に動画の忠実度を上げる設定になっている。(その代わり最適化は出来ないので、元より劣化したと感じるかも)

  deblock -2:-2, psy-rd :0.25, no-dct-decimate, ipratio 1.1, pbratio 1.1, aq-strength 0.5, deadzone-intra 6, deadzone-inter 6, qcomp 0.8
  デブロックフィルタ -1:-1, Psy-RD :0.25, DCT係数間引き OFF, I-Pフレーム間QP係数(%) 1.1, Adaptive Quantization強度;0.5, deadzone-intra 6, ビットレート変動量(%):80


psnr: psnr(エンコ前とエンコ後の映像を比較する時に使う計測値)が最大になるようにする。psnrの測定値にはブロックノイズ等の評価が入っていない。ビットレートが有り余るほどあるなら、割と悪くない設定かも?

  aq-mode 0, no-psy
  VAQ 無効, Psy-RD 0


ssim: ssim(psnrとはまた別の指標)が最大になるようにする。psnrと比べ人間の主観的判断に近いらしい。ビットレートが有り余るほどあるなら、割と悪くない設定かもしれない。

  aq-mode 2, no-psy
  VAQ 自動, Psy-RD 0


fastdecode:再生負荷を実用的なレベルで軽減する(画質は下がる)。これを使ってもまだ再生が重いのであれば、あとは平均fpsを落とすか、解像度を下げるか、PCを新しいものに買い換えるかしたほうがよい。デコード(再生)負荷が掛かる「CABAC」と「重み付け予測」をオフにする。

  no-deblock, no-cabac, no-weightb, weightp 0
  デブロックフィルタOFF, CABAC OFF, 重み付け予測(BフレームOFF Pフレーム0)


参考→http://nicowiki.com/%E6%8B%A1%E5%BC%B5%20x264%20%E5%87%BA%E5%8A%9B%EF%BC%88GUI%EF%BC%89%E3%81%AE%E8%A8%AD%E5%AE%9A%E9%A0%85%E7%9B%AE%E3%81%A8%E3%81%9D%E3%81%AE%E6%A9%9F%E8%83%BD%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6.html


おまけ

・動き予測アルゴリズムとエンコ時間
 Exhaustive Search【"esa"】以上の設定は恐ろしく時間がかかるので、暇人かCPU処理能力がぶっ飛んでるPCじゃないと厳しい。
 種類ごとのエンコード時間→http://kenknown.blog42.fc2.com/blog-entry-98.html

・rc-lookaheadとは?
 mb-treeレート制御に関連する設定で、観察するフレームの範囲を指定する設定みたいです。
2-passの2nd-passでは予め、全体を観察してから処理するので、無効化されます。
 ※mb-treeレート制御:時間軸で映像を観察して、後々重要になりそうな部分の品質を上げておき、どうでもよさそうなところは品質を下げるという処理を行う設定。

 伝播(propagation)範囲を指定するために、--rc-lookaheadが使用される。これはフレーム数を表しており、デフォルト値は40。presetでの値は、fastで30、slowで50、slowerとplaceboで60。最大250までで、 keyint_maxより大きい値は無意味なため切り捨てられる。2-passの2nd-passでは自動的に0になる。
 引用元→http://www.up-cat.net/x264%2528mbtree%2529.html


・deadzoneとは?
 ノイズやフィルムグレインを再現するか、あるいは、切り捨てるかの処理を行う設定。

--deadzone
 (intra/interとも、以下同)は高ビットレートでディテイルのレベルを上げる。具体的にはノイズやフィルムグレインなど。「些細な」情報をどのくらいまで切り捨てるかを指定するもので、そこで節約したbitをもっと重要な部分に振り向ける。低いほどオリジナルの情報を残そうとするが、レート不足の際は全体を強く圧縮することになる。
 引用元→http://agehatype0.blog50.fc2.com/blog-entry-533.html

  1. 2010/04/21(水) 22:02:08|
  2. メモ書き【未分類】
  3. | トラックバック:0
  4. | コメント:2
<<隕石マップ ハイブリパニッシャー 11-4-21K | ホーム | ミステックストーンをやってみた。>>

コメント

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます
  1. 2010/12/16(木) 00:49:13 |
  2. |
  3. #
  4. [ 編集 ]

Re: タイトルなし

wralkn>

亀レスすいません。

プリセットtouhouの情報は、以下のサイトに載っていた情報になります。
http://nicowiki.com/%E6%8B%A1%E5%BC%B5%20x264%20%E5%87%BA%E5%8A%9B%EF%BC%88GUI%EF%BC%89%E3%81%AE%E8%A8%AD%E5%AE%9A%E9%A0%85%E7%9B%AE%E3%81%A8%E3%81%9D%E3%81%AE%E6%A9%9F%E8%83%BD%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6.html
ただ、今は最新Ver.に合わせて書いてあるみたいなので、プリセットtouhouが消え、記事から記述が消えてしまったようです。

プリセット詳細から判断するに映画や東宝のOP向けでは無いと思います。

--aq-strength 1.3 (強め)
FPS等のゲーム動画で壁や地面に発生するブロックノイズを軽減
=文字や字幕が潰れてしまう

--psy-rd 1:0.2
Psy-trellisが「プリセットfilm」より強くかける設定になっています。
細かいディザ(ノイズの一種)やグレイン(フィルムに残るノイズ)を残すときに使用。
=ノイズが強すぎてしまう

--partitions all マクロブロック全使用
--ref 6 参照距離2倍
--deblock -1:-1 デブロックフィルタ(シャープに)
また、上記の設定になるため
他プリセットよりも、デコード(再生)時に負荷が掛かり、綺麗ですが重い設定になるので避けたほうがいいかもしれません。
  1. 2010/12/17(金) 19:54:08 |
  2. URL |
  3. さんうー #-
  4. [ 編集 ]

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://kusurubird.blog74.fc2.com/tb.php/111-183b8b40
この記事にトラックバックする(FC2ブログユーザー)
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。