レート制御シミュレーター

CRFが複雑さに応じてビットレートを調整する一方、CBRは品質のばらつきを代償に固定目標を維持する様子を見てみよう

インタラクティブシミュレーションを読み込んでいます...

CRF の数値はエンコーダ間を渡れない

CRF は絶対的な品質スケールのように見え、同一エンコーダの同一プリセット内では実際そのように振る舞います。しかしエンコーダをまたぐと違います。この値は、そのエンコーダ固有の内部量子化判断への添字であって、何かを測った量ではありません。ですから x264 のコマンドラインから x265 へ設定をコピーすると、要求内容が黙って変わってしまいます。おおまかな実務上の対応としては、同じ見た目にするには x265 は 5 か 6 ほど大きい数値を必要とします。既定の量子化スケールが異なるためです。プリセットも狙いを動かします。エンコーダがどの判断に時間を使う気があるかを変えてしまうからです。2 つのエンコーダで品質を揃える確実な方法は、それぞれでサンプルを符号化して見比べることだけです。

品質を固定するか、サイズを固定するか

レート制御とは、どちらのつまみを固定するかの選択です。CRFでは品質レベルを選び、ファイルサイズは映像の要求に応じて変動させます。CBRではビットレートを固定し、品質をシーンに合わせて上下させます。目安として、サイズが変わってもよいダウンロードや保存用にはCRFを、帯域が固定されるライブ配信や放送にはCBRを選びます。

CRFは激しいシーンでこっそり品質を下げる

名前に反して、「一定」品質は実際には一定ではありません。x264などのエンコーダーは、量子化カーブ圧縮係数(qcomp、既定値0.6)によって、最も複雑なフレームで意図的に品質を落とし、動きの多いシーンには厳密な一定品質よりも少ないビットしか割り当てません。速い動きが細部を隠す(マスキング)ため、アクション中に潜むアーティファクトに目が気づくことはほとんどないのです。

連鎖のひとつの段 — 何が入り、何が出て、後段で何が壊れるか

この段はエンコード処理のどこに位置するか

動画エンコーダは単一のアルゴリズムではなく、順序の決まった 8 つの段です。その順序は恣意的ではありません。どの段も、直前の段が仕事を可能にしてくれたからこそ存在します。このツールはそのうちの 1 つを扱います。下の連鎖から残りの 7 つに移動できます。

レート制御シミュレーター — ビットレート目標か画質目標のどちらかに当てるため、フレームごとに量子化器を選ぶ

レート制御は段ではなくループです。2 つの隣の間で一度動くのではなく、第 05 段の量子化を取り囲んで調整し続けます。

入ってくるもの
すでに符号化したフレームの実測ビット量と、当てるべき目標。
出ていくもの
次フレームの量子化器設定。第 05 段に返されます。
次の段が前提とすること
量子化を変えてよいことを前提にします。だから後に続くのではなく、その段を取り囲みます。
ここで壊れるもの
画質とビットレートを同時に一定に保つことはできません。CRF は画質を固定し、複雑な場面ではビットレートを上げます。CBR はビットレートを固定し、そこでは画質を落ちるに任せます。どちらかを選ぶことは、どちらが動いてよいかを選ぶことです。

全プロセスの詳細解説

  1. 4フレームのバッファから導出されるCBRの最悪フレームのスコア60 6 ステップ

    アクションシーン、CRF 23、4フレームのバッファ。CBR の最も低いフレーム品質は、このモデルが許可する最大値 85 のうち 60 と評価される。ルールはすべてページ上に示されている。CRF は各フレームの複雑さに比例したビットを割り当て、CBR は一律 2000 ビットを支払った上で 4 フレーム分を保持するバッファから補充を行い、CBR の品質は供給量を需要量で割った値の平方根の 85 倍となる。この 60 を導出せよ。

    1. CRF の割り当てはシーンの平均複雑さを基準に記述されているため、その平均をとると直ちに平均値へと戻る。シーンや CRF の値が何であれ、平均は目標値である 2000 ビットになる。その表示値は測定値ではなく定義である。

      bˉ=1120∑i=1120B cicˉ=B=2000 bits/frame\bar b=\frac{1}{120}\sum_{i=1}^{120}B\,\frac{c_i}{\bar c}=B=2000\ \mathrm{bits/frame}
    2. 情報を与えてくれるのはピーク値である。2000 に対する 4078 という数値は、最も負荷の高いフレームが平均複雑さの 2.039 倍であることを示している。生成器は複雑さの上限を 0.95 に制限しているため、このシーンの平均複雑さは 0.466 でなければならない。

      bmax⁡bˉ=cmax⁡cˉ=40782000=2.039 ⟹ cˉ=0.952.039=0.466\frac{b_{\max}}{\bar b}=\frac{c_{\max}}{\bar c}=\frac{4078}{2000}=2.039\ \Longrightarrow\ \bar c=\frac{0.95}{2.039}=0.466
    3. CBR も同じ曲線に直面する。フレームごとの需要量は CRF 割り当てと同じ式で表されるため、CRF が 4078 ビットを支払うフレームは、CBR も 4078 ビットを要求されるものの 2000 ビットしか受け取れないフレームとなる。

      Dt=B ctcˉ=bt ⟹ Dmax⁡=4078,B=2000D_t=B\,\frac{c_t}{\bar c}=b_t\ \Longrightarrow\ D_{\max}=4078,\quad B=2000
    4. それを補うのがバッファの役割である。満たされた状態では 8000 ビットを保持し、供給量を 5040 まで引き上げる。これは最も厳しいフレームが求める 4078 を余裕で上回る。満杯のバッファはピークを完全に隠し、品質が 85 から低下することはない。

      S=B+0.38β,βmax⁡=4×2000=8000 ⟹ Smax⁡=5040S=B+0.38\beta,\quad \beta_{\max}=4\times2000=8000\ \Longrightarrow\ S_{\max}=5040
    5. 実際には品質は 85 から低下するため、バッファが満杯であるはずがない。代わりにバッファを空と仮定する。供給量はわずか 2000 であり、比率は 0.4904、その平方根は 0.7003 となり、これに 85 を掛けた値は 59.5 となる。パネルはこれを四捨五入して 60 と表示する。表示された最小値は、バッファが空のときの下限値と正確に一致する。

      β=0:SD=20004078=0.4904,Q=850.4904=59.5→60\beta=0:\quad\frac{S}{D}=\frac{2000}{4078}=0.4904,\quad Q=85\sqrt{0.4904}=59.5\to60
    6. バッファは、需要が割り当てを超えた分だけ枯渇していく。ピークフレームではそれが 2078 ビットとなる。8000 ビットのバッファは、これの 3.85 フレーム分に相当する。このシーンの負荷の高い区間は 40 フレーム続く。

      βt+1−βt=B−Dt=−2078 ⟹ 80002078=3.85 frames\beta_{t+1}-\beta_t=B-D_t=-2078\ \Longrightarrow\ \frac{8000}{2078}=3.85\ \mathrm{frames}

    解答

    60 という数値はバッファのサイズ設定の誤りではなく、バッファが底を突いたことを意味する。バッファサイズは品質ではなく時間に変換される。バッファの蓄積量をフレームあたりの不足分で割ると、カバーできるフレーム数が得られる。バーストがビット数ではなくバッファのフレーム数で測定されるのはそのためである。長さ 40 フレームのバーストを隠すには、バースト 1 フレームあたり約 1.04 フレーム分のバッファが必要となり、全体で約 40 フレーム分を要するが、スライダーは 10 で停止する。これこそが可変ビットレートが必要とされる理由の一行要約である。CRF はバーストを隠す必要はなく、単にその分のコストを支払えばよい。

    βreq≈L (Dmax⁡−B)=2078L bits=1.04L frames\beta_{\mathrm{req}}\approx L\,(D_{\max}-B)=2078L\ \mathrm{bits}=1.04L\ \mathrm{frames}
  2. 1フレームあたり2000ビットにおけるCRFとCBRの10.8ポイントの差 5 ステップ

    どちらのモードもこのシーンでフレームあたり同じ 2000 ビットを費やす。CRF の品質ラインは 89.8 に位置し、CBR の平均は 79 である。この 10.8 ポイントの差が何によってもたらされているか、そしてそれが CRF のステップ数でどれほどのコストに相当するかを導出せよ。

    1. CRF のスコアはスライダーのみから定まる。CRF 18 から CRF 40 までの 22 ステップにわたって 45 ポイントが割り振られている。CRF 23 は 5 ステップ下であるため、89.8 となる。

      QCRF=100−23−1822×45=100−10.227=89.8Q^{\mathrm{CRF}}=100-\frac{23-18}{22}\times45=100-10.227=89.8
    2. したがって、スケール上のどこであれ 1 ステップは 2.045 ポイントに相当する。このモデルは CRF 品質を線形にしており、これにより後で差をステップ数に換算することが可能となる。

      ΔQΔ CRF=4522=2.045\frac{\Delta Q}{\Delta\,\mathrm{CRF}}=\frac{45}{22}=2.045
    3. ビットレートは単に似ているだけでなく、完全に同一である。CRF は構造上目標値を平均し、CBR はすべての単一フレームで目標値を支払うため、両者とも 120 フレーム全体で 240,000 ビットを生成する。

      bˉCRF=2000,biCBR=2000 ∀i ⟹ 120×2000=240 000 bits\bar b^{\mathrm{CRF}}=2000,\quad b^{\mathrm{CBR}}_i=2000\ \forall i\ \Longrightarrow\ 120\times2000=240\,000\ \mathrm{bits}
    4. したがって、89.8 と 79 の間の 10.8 ポイントの差にビットレートの違いは一切存在しない。同じビット数、同じファイルサイズでありながら、10.8 ポイント離れている。

      ΔQ=89.8−79=10.8\Delta Q=89.8-79=10.8
    5. この差は 2 つに分かれる。CBR は容易にクリアできるフレームであっても 85 に制限されており、これが CRF の 89.8 に対して 4.8 ポイントの損失となる。そして残りの 6.0 ポイントは、バッファに余裕がなくなったフレームで失われる。

      89.8−85=4.8,85−79=6.0,4.8+6.0=10.889.8-85=4.8,\qquad 85-79=6.0,\qquad 4.8+6.0=10.8

    解答

    固定ビットレートではここで 10.8 品質ポイントが犠牲になっており、それを買い戻すには 5.28 CRF ステップを要する。その引き換えに CBR が得るものはピークの制御である。CBR の最大フレームは平均と正確に同じ 2000 ビットであるが、CRF の最大フレームは 4078 ビットに達する。フレームあたり 2000 ビットしか送れない回線では、CRF のピークフレームは遅れて到着し、その 89.8 というスコアには何の価値もなくなる。これこそが 10.8 の損失を受け入れる唯一の理由である。ステップ 3 が除外した内容にも注目されたい。割り当て式には CRF の項が一切含まれていないため、CRF を 28 に進めてもスコアが低下するだけでビットレートは 2000 のままである。このページが示しているのは、ビットがどこへ配分されるかであり、ある品質レベルを得るためにいくらのコストがかかるかではない。

    10.82.045=5.28 ⟹ CRF≈28.3\frac{10.8}{2.045}=5.28\ \Longrightarrow\ \mathrm{CRF}\approx28.3
参考文献 (1)