Man / CODEC固有オプション / -x264encopts


Man / CODEC固有オプション / -x264encopts
2013-02-27 (水) 01:30:04更新
カテゴリ:x264

-x264encopts

オプションのヒント
Documents内、x264コデックでのエンコード
注意事項
ffmpegX0.0.9版では効かないオプションを含む。
最新オプションはカテゴリ:x264に追加する事があります。

リスト

原文の順番。

  • High Profile=QTPlayer 7非互換。
  • QTPlayer 7非互換=High Profileに記述が見あたら無いが、QTPlayer 7非互換。

bitrate=<value>

平均ビットレートの指定。default=off

qp=<0-51>

Pフレームに適用するquantizerの指定。default=26。0でロスレス。

crf=<1-50>

固定画質モード。bitrate指定と同時使用でqp_constantより実用的な画質固定(に近い)1パスエンコードが可能


pass=<1-3>

2 または 3パスモードの指定。

turbo=<0-2>

高速1st passモード。default=0(非使用)

keyint=<value>

IDRフレームの最大間隔。default=250

keyint_min=<1-keyint/2>

IDRフレームの最小間隔。default=25

scenecut=<-1-100>

Iフレーム挿入を決断する際の積極性。default=40


frameref=<1-16>

P/Bフレームと参照フレームまでの最大距離。default=1

bframes=<0-16>

Bフレームの最大連続数。default=0

(no)b_adapt

使用するBフレーム数の自動決定。default=on 音ズレに注意?
b_adaptとweght_bは競合する。

b_bias=<-100-100>

(no)b_adaptの「決断力」の強さ。default=0

(no)b_pyramid

Bフレームを参照フレームに使う。default=不明 QTPlayer 7非互換


(no)deblock

デブロックフィルタ。default=on

deblock=<-6-6>,<-6-6>

*2006/10月上旬に登場

(no)cabac

CABACの適用。default=on iPod 非互換

qp_min=<1-51> (ABR or two pass)

quantizerの最小値。default=10

qp_max=<1-51> (ABR or two pass)

quantizerの最大値。default=51


qp_step=<1-50> (ABR or two pass)

フレーム間のquantizer変動幅。default=2 管理人推奨値=4〜

ratetol=<0.1-100.0> (ABR or two pass)

ABRにおける変動幅の許容値。default=1.0 管理人推奨値=4

vbv_maxrate=<value> (ABR or two pass)

ローカルビットレートの最大値。default=off

vbv_bufsize=<value> (ABR or two pass)

vbv_maxrateで使う平均化区間。default=off

vbv_init=<0.0-1.0> (ABR or two pass)

default=0.9


ip_factor=<value>

I-P間のquantizer換算係数。default=1.4

pb_factor=<value>

P-B間のquantizer換算係数。default=1.3

qcomp=<0-1> (ABR or two pass)

quantizerの圧縮。default=0.6

cplx_blur=<0-999> (two pass only)

Iが後続のPに近い画質になる事を保証。default=20

qblur=<0-99> (two pass only)

qp値の時間軸ぼかしフィルタ。default=0.5


zones=<zone0>[/<zone1>[/... (CBR or two pass mode)

エンディングなど、部分的な画質調節

direct_pred=<name> (*2006/10月上旬に改訂)

Bフレーム中のダイレクトマクロブロックで使われる動き予測方式。default=spatial
管理人推奨値auto(旧3)

(no)weight_b

Bフレームの適応重み補完。default=不明
b_adaptとweght_bは競合する。

partitions=<list>

(*2006/10月上旬に登場)
オプショナルなマクロブロック・タイプの指定(default: p8x8,b8x8,i8x8,i4x4)。

(no)8x8dct

空間軸の状況適応変形サイズ(?)。default=不明 High Profile

me=<name> (*2006/10月上旬に変更)

フルピクセルの動き予測アルゴリズム。default=hex
管理人推奨値=umh

me_range=<4-64>

meで使う動き捜索範囲。default=16

subq=<1-7>

subpel精製品質の調整。default=5
管理人推奨値7

(no)chroma_me

サブピクセル動きサーチで彩度情報も参照。default=on

(no)mixed_refs

各8x8 または 16x8 motion partitionが、独自に参照フレームを選べるようにする。要frameref>1。

(no)brdo

Bフレームのマクロブロックタイプのレート歪み最適化。要subq=6

(no)bime

双方向(予測)マクロブロックのモーションベクトル精密化

trellis=<0-2>

レート歪み最適化の量子化(default=1)

deadzone_inter=<0-32>

*2006/10月上旬に登場

deadzone_intra=<0-32>

*2006/10月上旬に登場

(no)fast_pskip

Pフレームにおける速い段階でのスキップ検出。
闇階調のブロックノイズ緩和に効果有り

(no)dct_decimate

Pフレーム中の僅かな係数しか含まないDCTブロックを除去(デフォルトはenabled)。

nr=<0-100000>

ノイズリダクション

chroma_qp_offset=<-12-12>

彩度と輝度で別のquantizerを使う。default=0。実用範囲-2~2。

cqm=<flat|jvt|<filename>>

カスタム量子化マトリクス。default=flat High Profile

cqm4iy=<list> (also see cqm)

カスタムイントラマトリクス。輝度4x4。default=不明 High Profile

cqm4ic=<list> (also see cqm)

カスタムイントラマトリクス。彩度4x4。default=不明 High Profile

cqm4py=<list> (also see cqm)

カスタムインターマトリクス。輝度4x4。default=不明 High Profile

cqm4pc=<list> (also see cqm)

カスタムインターマトリクス。彩度4x4。default=不明 High Profile

cqm8iy=<list> (also see cqm)

カスタムイントラマトリクス。輝度8x8。default=不明 High Profile

cqm8py=<list> (also see cqm)

カスタムインターマトリクス。輝度8x8。default=不明 High Profile

level_idc=<10-51>

H.264規格ビットストリームのLevel指定。default:51 - Level 5.1

threads=<1-16>

マルチスレッド。default=1

(no)global_header

PSPとか用

(no)interlaced

インタレ保持

log=<-1-3>

スクリーンに表示する情報量。default=2

(no)psnr

signal-to-noise ratioの表示。default=nopsnr

(no)ssim

*2006/10月上旬登場
PSNRより新しい画質指標。

(no)visualize

エンコード中の視覚化。default=novisualize

カテゴリ別

補足メモ

.mp4コンテナ作成にMEncoderを使う場合の問題点〜其の一

AVI作成ソフトとしてスタートしたMEncoderは、AVIにBフレームを入れるハッキングを前提としている。
このため、bframesを使うと冒頭にDelay Frame(またはN frame)が入る。枚数は1枚だが、B関連のオプションにより増える可能性がある。
この仕様によるデメリットは以下の通り

  1. 映像の開始点が0.03~0.04sec遅れる(指定fpsに拠る)。即ち音ズレ。
  2. 映像の終端が0.03~0.04secぶん消失する。
  3. Delay Frame(またはN frame)はH.264/AVC規格に存在しない。
    1. QuickTime Player7は再生可能。加工不能。

原因はMEncoder.cのかなり深い部分に関わるものであり、改善は難航している模様。

.mp4コンテナ作成にMEncoderを使う場合の問題点〜其の二

-lavfoptsを使うと直接.mp4コンテナに書き出せるが、この場合、bframesを使うと警告と共にエンコードが中断する。原因は上記と同じ。.mp4コンテナが要求する特定のヘッダ情報(フレームの表示持続時間やバッファリング期間SEIなど)をうまく吐き出せないため。

元来、MEncoder.c自体がMPEG系素材のPTS,DTSを解釈できないため。

-mpegoptsではPTS,DTSを推測で書き込むが、Bフレームの取り扱いが大幅に複雑化したH.264/AVCでは推測書き込みも困難。

H.264/AVCのBフレーム

双方向予測について。
BフレームはMPEG4とH.264/AVCで若干意味が異なるようだ。
MPEG4までのBフレームは、自分より前後から各1フレームを参照フレームに使う。従って、bi-directional(双方向)
H.264/AVCのBフレームは、前後を区別せず前から2枚でも、後から2枚でも、前後から各1枚でも良いらしい。従って、bi-predictive(双予測)

x264のBがbi-directional(双方向)のみであるのか、bi-predictive(双予測)も使うのかは不詳。

H.264/AVCのIフレームとIDRフレームの違い

IDRフレームとは、H.264/AVCの新しいIフレームの一種。
正式にはInstantaneous Decoding Refresh(デコーダ復号動作の瞬時リフレッシュ)というが、要するにデコーダ・バッファにリセットをかけるフラグのついたIフレーム。
Iフレームが画質のキモとなる事は変わらないが、シークはIDRフレーム単位でしかできない。
IDRは後続フレームに対し、自分より前のフレームを参照する事を禁止する(H.264/AVCのIは禁止しない)。

H.264/AVCでは参照関係の自由度が激しく向上した。

  1. multiple reference frame(複数参照フレーム、frameref(no)mixed_refs参照)で、直前直後よりも遠いフレームを参照フレームに使えるようになった。
  2. Bフレームを参照フレームにできるようになった(b_pyramid参照)。

このように、従来のclosed GOP(Iフレームを基準とするシーク/編集の単位)の概念はめろめろになっている。IDRフレームはこれを解決するもの。

MEncoderのx264関連記述から読み取れるのはこれくらいだが、規格上はこの他に、

  1. Pフレームは自分より後ろを参照しても良くなった。従来は直前のみ。
  2. Bフレームはbi-predictive、双予測(前項参照)になった。従来は直前直後から各1枚のみ。

と、いったものもある。

このように、”参照関係の自由度が激しく向上した”事で、デコーダバッファ内部における映像ストリームのフレーム並べ替えは不規則で、複雑なものになっている。
Win/Linux由来のAVIインフラにベースを置くMEncoderのx264がこれをどこまでサポートしているかは疑問が残る。

x264にCBRは存在しない

qp_minを始め、多くのオプションにABR or Twopassの記述がある。
x264は1passでも平均化区間(Averaging period)を使ったABRになると思われる。バッファ内に映像の一定区間を溜め込み、その範囲でABRを行う模様。
原文では、この区間単位のビットレートをローカルビットレートと呼んでいる。
関連オプションとしては以下のようなものが上げられる。

2006/10月上旬に抹消されたオプション

qp_constant=<0-51> (*2006/10月上旬に抹消)

Pフレームに適用するquantizerの指定。default=26。0でロスレス。

deblockalpha=<-6-6> (*2006/10月上旬に抹消)

デブロックフィルタのAlphaC0 パラメータ。default=0

deblockbeta=<-6-6> (*2006/10月上旬に抹消)

デブロックフィルタのベータパラメータ。default=0

(no)i4x4 (*2006/10月上旬に抹消)

マクロブロックタイプ"i4x4"。default=on

(no)i8x8 (*2006/10月上旬に抹消)

マクロブロックタイプ"i8x8"。default=on High Profile

(no)b8x8mv (*2006/10月上旬に抹消)

マクロブロックタイプ"b16x8"、"b8x16"、"b8x8"。default=on

(no)8x8mv (*2006/10月上旬に抹消)

マクロブロックタイプ"p16x8"、"p8x16"、"p8x8"。default=on

(no)4x4mv (*2006/10月上旬に抹消)

マクロブロックタイプ"p8x4"、"p4x8"、"p4x4"。default=off


  • 資料探してました これからもがんばってください -- 2008-03-09 (日) 20:49:24
  • 大変役に立ちました。ありがとうございます。 -- 2008-09-01 (月) 22:12:22