「ICZの剣」 さんからの抜粋です。
2005/02/12 x264 - H264/AVC encoder ※最新版は少し設定項目が違います。
というように設定全てが画質に繋がります。ちなみにBフレームのトコが1番響きます。
なおこれは、H.264の技術的な知識が無い状態で、5秒程度のサンプルを設定かえてエンコードし、その変化した映像と容量とマルチパス用ログの内容を見て書いた感想なので、各項目の説明がH.264の仕様として正しいのかは自信無し。
|
「動画関連リンク集」から抜粋 |
ビデオ圧縮コーデック「H.264/AVC」より マルチパス方式でエンコード出来たり、Bフレームを使える用になったのでさらに使い勝手と容量対画質の向上が望めるようになりました。Single Pass-QuantizerがQB(品質)でこの値が20前後で従来のDivXと同程度の画質で容量3割(Bフレームなし)〜5割(Bフレーム有り)減です。 MultipassはFirstpassが1パス目、Nth.passで1パス目の結果を元にビットレートを最適化して配分します。じつはUpgrade statsfileにチェックで2パス目の情報も記録でき、さらにそれを元にさらに最適化した3パス目のエンコードも可能です。これを積み重ねるとビットレートの配分がより効率よくなります。3〜4パス以上は画質かわならいと思いますが。 あとMultipassモードを使う時の注意として1パス目で設定していたMax B-framesの数値を2パス目以降で変えてエンコードしようとするとエラーで落ちます。ログを見るとI、B、Pフレームの割り振りがちゃんと書いてあり、それと辻褄が合わなくてエラーが出るのだと思われます。で、エラーが出て落ちた場合、解析用のログファイルが壊れているので壊れてしまったnパス目のログファイルを削除しないと延々とエラーで落ちることになります。 それとログファイルを設定した場所がなにげに以前と変わってたりする事があるのもエラーの原因です。1パス目からやりなおすなら 無問題な事ですが。
自分が試した中で特に気になったところはAdvancedタブの中のMax B-framesと B-frames prediction mode。 1 Max B-framesは増やすと容量対画質がよくなりますが、今のところ2以上は暗い画面でのフェードが破綻しやすく、ブロック化して見苦しくなります。 かつ、増やしすぎると画質低下及び容量増になってしまうので1か2か3まで。無難は1です。 2 B-frames prediction modeは、デフォルトでTemporal(3D)ですが、このままだと同様に暗い画面でのフェードがブロック化して見苦しくなります。Spatial(2D)のほうがそういう 現象が少ないです。 それ以外のシーンだと画像の安定感でTemporalがSpatialより極微小に上に感じます。Bフレームを2以上増やすならSpatialよりTemporalが安定します。 3 Single Pass-Quantizer 20で試す限りBフレーム有りとBフレーム無しではDivX4.12のQBで100MのものがBフレーム無しで70M、Bフレーム有りで50M。画質はDivX4.12のそれと同程度以上。 4 かつ、Bフレーム1とBフレーム2での容量差は3パーセント以下、B-frames prediction modeがTemporalとSpatialではTemporalは容量が極々微小にSpatialに劣ります。 5 かつ、MultipassモードでSingle Pass-Quantizer 20と同程度の容量に圧縮した時の画質はBフレーム有りと無しでほとんど見分けつかない、ので、3の結果よりBフレーム有り版はさらに25パーセントほど容量を落としても現在の画質を維持できるはず。 という結果から Max B-frames 1 を基本設定としてオススメします。 Single Pass-Quantizer を使うなら20前後で様子を見て決めるとよいかと。
Deblocking filterはプラス方向にするほど画像がノッペリし、マイナス方向に入れると細部を潰さないように圧縮します。低レートで行くならプラス、高レートで高画質を狙うなら切るかマイナス。 RetecontrolではKeyframeboostがキーフレームをどれだけ割り振るか、B-flames reductionはBフレームでどれだけ圧縮を効かすか、Bitrate variabilityは最大ビットレートと最小ビットレートの振幅幅をきつくするか、でしょうか。とりあえずはデフォルトのままでいいとおもいます。 この中で特に画質と容量に直結するのはB-flames reductionで、容量を押さえたい時はBitrate variabilityを上げたらいいです。低ビットレートなのにココの圧縮率が低いままだとIフレームやPフレームの画質がBフレームに引張られて低下します。それに連動するのですが、綺麗な所は綺麗なのに時々汚いシーンがあるなぁという時は、ビットレート配分が上手くいってなかったりするのでKeyframeboostとBitrate variabilityの配分を考えます。 Macroblock Partitionsはチェックを付けるほどブロック単位での画素やビットレート配分が正確になりパッと見の画質がビシッとしますが、その分、ビットレートがいらないと判断される個所と必要と判断された個所の画質差が大きくなり、シーンによってはアンバランスさを見出すかもしれません。ここも暗所のフェードが厳しくなる一因です。 ここはチェックの数だけエンコードが遅くなり、チェックの数だけ2Dのビットレート配分が良くなり、容量も極わずかに減ります。が前述のアンバランスさの一因にもなります。難しいトコロです。やってみて自分が気に入る設定を試すしかないです。 ちなみにここを弄ったとしての変化は10000が9941ぐらいになる程度。圧縮が重いと感じたら外し、外して気に入らない画質だったら付け足して行けば良い、位の感じでいいとおもいます。
ちなみに、全ては実際に試して変化した映像を見て自分が感じた事なので理論的なところで正確でない可能性が。そういうのでよければ参考にどうぞ、程度な感じ。 なお、エンコードは可能ですが、デコードは出来ない様子。デコードにはffdshowが必要ぽい。 とりあえず2005/02/07版での話。 |