Man / CODEC固有オプション / -xvidencopts
2010-02-15 (月) 06:22:39更新
カテゴリ

xvidのエンコードオプション(-xvidencopts)

ffmpegX0.0.9s版(Mac用バイナリ)とはデフォルト値が違います。(デフォルト:オンと書いてあっても信用せず、コマンドに書くほうが吉))

Xvidエンコードには固定ビットレート(CBR)、固定quantizer、2パスの三つのモードがある。

pass=<1|2>

2パスモードでパス番号を指定。



bitrate=<value> (CBR or two pass mode)

ビットレートの指定。
単位は、16000未満なら、kbit/sec
160000より大きければ、bit/sec マイナス値を入れると、Xvidはこれをkbytesで指定されたターゲットサイズと看做し、必要なビットレートを自動計算して使用する(デフォルトは687kbits/s)。


fixed_quant=<1-31>

固定quantizerモードへの変更と値の設定。


zones=<zone0>[/<zone1>[/...]] (CBR or two pass mode):特定部分の画質設定

特定部分の画質設定。エンディングやクレジットなどなど。 各ゾーンの指定は<start-frame>,<mode>,<value>。 このうち<mode>は、

q:固定quantizer値の乗っ取り。値は2.0から31.0。意味はquantizer値
w:レートコントロールの重み。値は0.01から2.00。意味は品質補正。%。

設定例:

zones=90000,q,20

フレーム番号9000以降を全て固定quantizer20でエンコード

zones=0,w,0.1/10001,w,1.0/90000,q,20

フレーム番号0から10000のビットレートを10%に、フレーム番号9000以降、最後までを固定量子化値20でエンコード。2番目のゾーン指定をするには、1番目のゾーンの終了点を指定しておく必要がある。ここで指定しなかった場合は89999フレームまでのビットレートが10%になる。



me_quality=<0-6>:動き予測の精度

デフォルト:6

動き予測サブシステムのコントロール。高い程予測は正確。正確な予測ほどビットが節約できる。
予測精度はCPUタイムと引き換えなのでリアルタイムエンコードが必要ならこの値を減らす。


(no)interlacing:

インターレースされたビデオ素材をエンコードする。 インターレースされた素材の場合にオンにする。 NOTE: 縮小拡大するなら以下のようなインターレースに対応したリサイザを使う事。

vf scale=<width>:<height>:1

4mv:

マクロブロック毎に4 motion vectorsを使用。エンコード速度低下と引き換えに圧縮率を上げる。 WARNING:このオプションはXviD-1.0.xでは非難[廃止?]された。現在はme_qualityオプションで設定するようになっている。使うには、me_quality > 4



rc_reaction_delay_factor=<value>

このパラメータで、CBRレートコントローラが、平均化区間のフレームをCBRにするためにビットレートを変更する前に待機するフレームの数を調整する。

訳注:厳密にはXvidのCBRはCBRではなく、素材を短い区間に細切れにして、区間毎のABRを行っている。デフォルト値が書いてないのでどう調整してよいやら、、、。


rc_averaging_period=<value>:CBRの平均化区間

現実にはCBRは実現困難。 ビットレートは素材映像次第で変化する可能性があるし、予測も困難だ。 この理由により、Xvidは指定されたビット数を(マイナス数ビットの誤差で)守るために、平均化区間を使用する。 このオプションの数値は「フレームの数」を意味する。 Xvidはここで与えられたフレーム数を平均化区間と看做し、その範囲でビットレートを平均化する事でCBRの実現を試みる。


rc_buffer=<value>:レートコントロールバッファの大きさ



quant_range=<1-31>-<1-31>[/<1-31>-<1-31>]:(旧式)quantizer値の変動範囲


原文
CBR mode: min & max quantizer for all frames (de- fault: 2-31) two pass mode: min & max quantizer for I/P-frames (default: 2-31/2-31) WARNING: As of XviD-1.0.x, this option is replaced by the [min|max]_[i|p|b]quant options.

min_key_interval=<value> (two pass only):キーフレームの最小間隔

デフォルト:0

max_key_interval=<value>:キーフレームの最大間隔

デフォルト:fpsの10倍


mpeg_quant:(旧)MPEG quantizerの適用

XviD-1.0.x以降ではquant_typeに変更された。


mod_quant:(旧)MPEG または H.263 quantizer

XviD-1.0.x以降では使用できない。



keyframe_boost=<0-1000> (two pass mode only):キーフレームの画質向上

デフォルト:0

一定量のビットをIフレームに多めに配分し、キーフレームの画質を上げる。 値は増加分をパーセントで指定。 10を指定すると、キーフレームに与えられるビットはデフォルトより10%増える。



kfthreshold=<value> (two pass mode only):

デフォルト:10

kfreductionと協調して動作する。 ここでは2つのフレームが連続していると看做す距離を指定する。 連続していると看做されたフレームはkfreductionに従って別々に処理される。


kfreduction=<0-100> (two pass mode only)

デフォルト:30

上記2つ(kfthreshold、kfreduction)の設定はキーフレームが直前のキーフレームに近過ぎる(立て続け)場合のサイズ調整に使う。kfthresholdはキーフレームを間引く範囲を指定し、kfreductionはそこで減らされるビットレートを決定する。直前のキーフレームはイジられない。


divx5bvop:(旧)Divx5互換Bフレーム

デフォルト:オン

XviD-1.0.x以降ではこのオプションはclosed_gopに変更された。



(no)greyscale:グレイスケール

彩度情報の廃棄。 出力結果はグレイスケールになる。 速度向上は無し。エンコードの最終段階で彩度情報を書き込まないだけ。


debug:デバッグ情報の書き出し

フレーム毎の統計を./xvid.dbg[1]に書き出す(2パスコントロールファイルとは別)。

[1]カレントディレクトリ


以下のオプションは最新の安定板XviD 1.0.x (api4)でしか使えない[1]もの。

[1]主要なものはffmpegX0.0.9s版で動作確認済。



(no)packed:

 このオプションは、AVIのようにout-of-order[1]フレームを上手く扱えないコンテナ形式にエンコードする際のフレームオーダの問題を解決する。  実際には、大半のデコーダ(ハード、ソフトとも)は自力でフレームオーダを扱えるので、このオプションをオンにすると混乱してしまうかもしれない。従って、意味が分からない場合はオフのままのほうが安全。

WARNING:このオプションは規格外のビットストリームを生成するので、DivX/libavcodec/XviD以外のISO-MPEG-4デコーダではデコード不能になるだろう。 WARNING:また、ファイルの中にウソのDivXバージョンを書き込むのでデコーダによってはバグの自動検知が混乱する。

[1]順序がバラバラの、整頓していない


max_bframes=<0-4>:最大Bフレーム数

デフォルト:2

I/ Pフレーム間に挟むBフレーム数の最大値


bquant_ratio=<0-1000>:Bフレームと他のフレームとの間のquantizer変動率

デフォルト:150

150=1.50の意。[1]

[1]経験上、logでみるとBフレームには他よりも高いquantizer値が適用されている。fixed_quant=4、他のオプション指定無しの場合、Iフレームは全て4、Pフレームは5程度、Bフレームは6〜7程度に揃っている。サイズを気にせず、望み得る最高画質を求める場合、ここは100にすれば、Bも4になると思はれる。



bquant_offset=<-1000-1000>:Bフレームと他のフレームとの間のquantizerオフセット

デフォルト:100

100=1.00


bf_threshold=<-255-255>:Bフレーム使用の閾値

Bフレームの使用に適さないシーンがある。大半が静止しているフレーム内で小さな部分が激しく動いているようなシーンではノイズが出がちだ。(例えば、話し手の唇以外にmまったく動きの無いようなシーンの口の動きなどで起こりうる)。この設定でBフレーム使用可否の優先度合いを調整できる。値が高い程、Bフレーム使用の可能性が高まる。


(no)closed_gop:

デフォルト:オン

全てのGOPを閉じる。(GOP=グループ・オブ・ピクチャ。2つのIフレームに挟まれた領域)これでGOPは他のGOPに依存しなくなる。 これはGOPの最後のフレームはPかNフレーム[1]であり、Bではなくなる事を意味する。一般的にこのオプションをオンにするのは良いアイデアだ。

[1]:Nフレームの意味不明、データを含まないフレーム、すなわち、直前のフレームをそのまま表示し続けろ、と指示してあるだけのフレームと思はれる。



frame_drop_ratio=<0-100> (max_bframes=0 only):可変フレームレートのビデオ生成。

後続フレームと直前フレームの差異がこのオプションで指定した閾値と同じか、それ以下の場合、後続フレームをエンコードしない。(いわゆるn-vop[1]と呼ばれるものをストリームに書き込む)。 再生時に使った場合、n-vopが出て来た場合はその直前のフレームが表示される。 WARNING:このオプションを使って再生すると、動きがぎくしゃくしたビデオになり得る。自己責任で使う事!

[1]:おそらく前述のNフレームと同じ。データを含まないフレーム、すなわち、直前のフレームをそのまま表示し続けろ、と指示してあるだけのフレームと思はれる。 メモ:日露戦争の記録フィルム(15fps程度、恐らくゼンマイ駆動)が入ったNHK特集で記録映部だけがめろめろだった事がある。そうした場合に有効か。他には30fpsと24fpsが混在するアニメ、メトロポリスなどオリジナルfpsが不明瞭な古い白黒映画などに効果があると思う。


(no)qpel:1/4ピクセル精度モーションサーチ

MPEG4のデフォルトのモーションサーチの精度はハーフピクセル。 MPEG4規格はエンコーダに1/4ピクセル精度をオンオフ出来るように提案している。通常、このオプションは画像をシャープにする。 残念ながらビットレートに大きなインパクトが有り、固定ビットレートで高ビットレートを使うと画質劣化する場合がある。 事前に効果をテストしてから使った方が良い。


(no)gmc:グローバル動き補償

グローバル動き補償の使用。オンにするとXvidはGMCフレームという特別なフレームを生成する。これは映像にパン/ズーム/回転がある場合に有用。このオプションで圧縮率が向上するかどうかは映像内容に強く依存する。

*:パン/ズーム/回転など、画面全体が書き変わる映像は、映像圧縮が最も苦手な部分とされる。野球中継で打球を追うカメラなど。GMC非対応の再生機器も多く、H264/AVCでは廃止されたらしいので使っていない。余談だが、経験上、一見地味なアニメでもこうしたカメラワークが随所に駆使されている事がある。圧縮結果のファイルサイズを見て気が付いたりもする。



(no)trellis:

デフォルト:オン

Trellis Quantization (格子量子化)はadaptive Quantization(適応量子化)の一種。 量子化された係数を変化させる事でビットを節約する。これによりエントロピーエンコーダでの圧縮率が向上する。品質への影響は良好で、VHQが多大なCPUパワーを消費する場合、trellisはより低いCPU負荷で多少のビット節約ができるので、良い代用になる。 (固定ビットレートでは画質も上がる)

*:ナニを言っているのかさっぱりだが、経験的にはそれなりに圧縮率が上がる。ffmpegX0.0.9sのXvidは古く、デフォルトでオンにならない模様。同ソフトのlibavcodec-mpeg4にもtrellisがあるが、こちらは画質固定エンコード時にビットレート値を参照し、ビットレート上限として使用する模様=事実上画質固定にならない。


(no)cartoon:

アニメ/カートゥーンを圧縮する場合に使用。Xvid内部の設定を変更し、フレームタイプの決定(※訳注:多分I/P/B)や動き予測を"フラットルッキング"なカートゥーンに最適化。

*フラットルッキングで無いアニメは要注意。背景が緻密だったり、テクスチャバリバリのCGだったりすると背景の潰れが気になる事もある。quant_type=の値をh263のまま圧縮する場合、デノイズとの絡みもあって判断が難しい。


quant_type=<h263|mpeg>:使用するquantizer(量子化)タイプの指定。

使用するquantizer(量子化)タイプの指定。 高ビットレートではMPEGが細かいディテールをよく残す。 低ビットレートではH.263のスムーシングがブロックノイズを減らす。 カスタムマトリクスを使う場合は必ずMPEGを使う事。

*個人的には必須。妖精現実さんの初心者向けメモではたいして違いは解らんと書いているが。当方が常用する2000kbps2パスでは全然違う。上記メモは1CD化を前提にしていた頃に書かれた物のようなので、ビットレートの高低の境目は700〜900kbpsのあたりと思われる。尚、経験上、2000kbps2パスでも大半のアニメは1500を切る。実写映画も五割程度は1stが2000を超えない



(no)chroma_me:色彩情報を使った動き捜査

デフォルト:オン

通常の動き予測はモーションベクトルを見つけるのに輝度情報しか使わないが、一部の素材では彩度(色度)情報も使うとより正確なモーションベクトルを発見できる。この設定で彩度(色度)情報を動き予測に使用する。

*白黒映画でも彩度が付加されている(少し青を足して見やすくしてあるぽい)ので有益な可能性がある。白黒は見た目に反して圧縮し難いので常用


(no)chroma_opt:色彩の最適化フィルタ

彩度最適化プレフィルタの使用。 輪郭のジャギ(階段状のギザギザ)を減少。 エンコード速度の低下と引き換えに画質向上。 原理的にはPSNRを低下させる。数学的な偏差はオリジナル映像より大きくなるが、人間の目には画質が向上して見える。このオプションは色情報を元に動作するのでグレイスケールでエンコードする場合はオフにしても良いだろう。


(no)hq_ac:

デフォルト:オン

隣接ブロックからの高品質なAC係数予測をオンにする。

*意味不明だが高品質って書いてあんだから常用



vhq=<0-4>:動き捜査に周波数領域(DCT)も使う

デフォルト:1

動き予測アルゴリズムは通常のカラー領域のサーチをベースに、基準フレームと圧縮されたフレームの差異が最小になるモーションベクトルを見つけようとする。 この設定を使うとXviDは通常のカラー領域に加えて周波数領域(DCT)もモーションベクトルのサーチ対象に加え、空間的な差異だけでなく、encoding length of the block[1]も最小化する。 0が最高速、4が最低速。

0 off
1 mode decision (inter/intra MB) (default)
2 limited search
3 medium search
4 wide search

[1]:理解不能 G5@2GHzは0でほぼ実時間エンコード。G4@450MHzで3倍程度。


(no)lumi_mask:

適応量子化を使うとマクロブロックquantizerは各フレーム内部で変動できるようになる。これは「心理知覚的な」設定で、人間の目は非常に明るい/暗い部分では細かいディテイルを見分けられない事を応用したもの。この設定を使うと、上記のような箇所を、他の部分よりも強力に圧縮し、余ったビットを他の場所に回す。これにより全体の画質は向上し、PSNRは低下する。

*PSNRは未理解だが、高いほど良いとされる


min_iquant=<0-31>:Iフレームの最小quantizer値

デフォルト:2


max_iquant=<0-31>:Iフレームの最大quantizer値

デフォルト:31

min_pquant=<0-31>:Pフレームの最小quantizer値

デフォルト:2

max_pquant=<0-31>:Pフレームの最大quantizer値

デフォルト:31


min_bquant=<0-31>:Bフレームの最小quantizer値

デフォルト:2

max_bquant=<0-31>:Bフレームの最大quantizer値

デフォルト:31

quant_intra_matrix=<filename>:カスタムイントラマトリクスファイルの読み込み。

読み込むファイルはxvid4conf's matrix editorで作成する。

*Win版のXvidではマトリクスエディターが付属している事がある。MacOSX上で動作するものは未見。各種「オレのマトリクスファイル」も流通してんのかも。



quant_inter_matrix=<filename>:カスタムインターマトリクスファイルの読み込み。

読み込むファイルはxvid4conf's matrix editorで作成する。


curve_compression_high=<0-100>:

デフォルト:0

高ビットレートのシーンから指定したパーセンテージの"bit"を取り除き、"ビットリザーバ"に取りのけておく。 高ビットレートのシーンに割り当てられた"bit"が多すぎて、より低いビットレートのシーンが汚く見えてしまう場合にも使える。


curve_compression_low=<0-100>:

デフォルト:0

低いビットレートのシーンに指定したパーセンテージの"bit"を与える。ムービー全体から取りのけておいた"bit"を使う。 低ビットレートのシーンがところどころ、ちょっとブロックノイズ多いなぁ、、という程度の場合に手軽に使えるだろう。

*ケロロ軍曹のオープニングが毎週すごいビットを持って行く。今週は本編もすごく良く動くので、画質が心配だ。でもファイルサイズは1話300MBと決めている。というような場合、zoneでフレーム番号を指定するよりはcurve_compression_highとcurve_compression_lowのほうが手軽かも。



overflow_control_strength=<0-100>:

デフォルト:5

2パスエンコードで1パス目の実行中にスケールドビットレートカーブが計算されます。この時、期待されるカーブとエンコード中に得られた結果の差をオーバーフロウと言います。当然、2パスレートコントローラはこのオーバーフロウを直後のフレームに再分配する事で補正を試みます。この設定は直後のフレームに再分配されるオーバーフロウの量をコントロールします。低い数値はオーバーフロウコントロールをいい加減にし、大きなビットレートが必要なシーンからのビット再分配をなだらかにします(短かいクリップでは予測を無効にし得る)。高い数値はビット再分配をメリハリよく(※訳注:激しく、断面的に)します。高くしすぎるとメリハリがつき過ぎてノイズが出るでしょう。 NOTE: この設定は画質への影響が大きい。注意深く扱う事。


max_overflow_improvement=<0-100>:

デフォルト:5

フレームビット再分配の途中で、オーバーフロウコントロールはフレームサイズを増やす事が有る。この設定で、オーバーフロウコントロールに理想的なカーブ再分配と比較してどの程度までフレームサイズを増やして良いかの範囲を最大パーセンテージで指定する。


max_overflow_degradation=<0-100>:

During the frame bit allocation, overflow control may decrease the frame size. This parameter speci- fies the maximum percentage by which the overflow control is allowed to decrease the frame size, com- pared to the ideal curve allocation (default: 5).



container_frame_overhead=<0...>:

デフォルト:24(AVIの平均的なオーヴァヘッド)

 各フレームの平均オーヴァヘッドをバイトで指定。大半のユーザーはビデオコンテナのオーヴァヘッドを考慮せずにビデオのターゲットビットレートを指定する。この小さな、しかし(たいていの場合は)コンスタントに書き込まれるオーヴァヘッドの存在により、出来上がりのファイルサイズが期待より大きいという事が起こりうる。XviDでは、コンテナが生成する各フレーム毎のオーヴァヘッドの量を指定出来る(指定はフレーム毎の平均値のみでおこなう)。0を入れた場合は、XviDは内蔵する独自の値を使用する。


par=<mode>:

ピクセルのアスペクトレシオ(縦横比)の設定。(DAR=Display Aspect Ratioとは別)。PARは各ピクセルの縦横比。なのでDAR = PAR * (width/height)の関係にある。MPEG4規格のPARには5種類と拡張1種類があり、選択が可能。

vga11     PCで一般的なPAR。正方形ピクセル。
pal43     PAL 規格の 4:3 PAR. 長方形ピクセル。
pal169    同上
ntsc43    同上
ntsc169   同上 (実際の数値設定必須)
ext       独自の縦横比をpar_width, par_heightオプションで指定。

NOTE: 一般的にアスペクト設定とautoaspect オプションで十分。

*一般的なPARにしか対応しない再生ソフト/機器もあり得ると思う。


par_width=<1-255> (par=ext only)

上記par=<mode>参照



par_height=<1-255> (par=ext only)

上記par=<mode>参照


aspect=<x/y | f (float value)>:

MPEGファイルと同様に、ファイル内部にムービーのアスペクト(縦横比)を書き込む。画質的に縮小より良い。MPlayerなど少数のプレイヤしか正しく再生できない。アスペクトの数値は比率か、小数で指定する。


(no)autoaspect:

aspectオプションと同じだが、 crop/expand/scale/etcなど、フィルターチェインで指定した全ての調整を加味して自動でアスペクトを計算。



psnr:

エンコード終了後にビデオ全体の PSNR(peak signal to noise ratio) を表示し、各フレーム毎の記録をカレントディレクトリの'psnr_hhmmss.log'に書き出す。数値はデシベルでこれは高い程よろしい。

ffmpegX0.0.9sではlogはルートディレクトリ(HD最上層)にできる。


以下のオプションはXviD 1.1.x.の開発版専用

bvhq=<0|1>

デフォルト:1

この設定でBフレームのベクトル候補を使う事が出来る。VHQオプションでPフレームに適用するレート歪み最適化で使う事になる。ほとんど速度低下無しで Bフレームの画質が向上する。




Top
├▼Manuals
└┴▼CODEC固有


コデック固有Opt(MEのみ)
-divx4opts
-lameopts
├-toolameopts and -twolameopts respectively
-faacopts
-lavcopts
-nuvopts
-xvidencopts
-x264encopts
-xvfwencopts
-mpegopts
-lavfopts


FrontPage
MPlayer
Manuals
Documents
カテゴリ

■GENERAL
MEMO
LINK
雑談所
最近の更新
popular

■Other Tools
ffmpeg
mkvmerge
mp4box
MPEG Streamclip
QTCoffee
x264cli

■About
About Wiki

edit


blog


本日1
昨日1
累積10197