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

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 ビットになる。その表示値は測定値ではなく定義である。

    2. 情報を与えてくれるのはピーク値である。2000 に対する 4078 という数値は、最も負荷の高いフレームが平均複雑さの 2.039 倍であることを示している。生成器は複雑さの上限を 0.95 に制限しているため、このシーンの平均複雑さは 0.466 でなければならない。

    3. CBR も同じ曲線に直面する。フレームごとの需要量は CRF 割り当てと同じ式で表されるため、CRF が 4078 ビットを支払うフレームは、CBR も 4078 ビットを要求されるものの 2000 ビットしか受け取れないフレームとなる。

    4. それを補うのがバッファの役割である。満たされた状態では 8000 ビットを保持し、供給量を 5040 まで引き上げる。これは最も厳しいフレームが求める 4078 を余裕で上回る。満杯のバッファはピークを完全に隠し、品質が 85 から低下することはない。

    5. 実際には品質は 85 から低下するため、バッファが満杯であるはずがない。代わりにバッファを空と仮定する。供給量はわずか 2000 であり、比率は 0.4904、その平方根は 0.7003 となり、これに 85 を掛けた値は 59.5 となる。パネルはこれを四捨五入して 60 と表示する。表示された最小値は、バッファが空のときの下限値と正確に一致する。

    6. バッファは、需要が割り当てを超えた分だけ枯渇していく。ピークフレームではそれが 2078 ビットとなる。8000 ビットのバッファは、これの 3.85 フレーム分に相当する。このシーンの負荷の高い区間は 40 フレーム続く。

    解答

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

  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 となる。

    2. したがって、スケール上のどこであれ 1 ステップは 2.045 ポイントに相当する。このモデルは CRF 品質を線形にしており、これにより後で差をステップ数に換算することが可能となる。

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

    4. したがって、89.8 と 79 の間の 10.8 ポイントの差にビットレートの違いは一切存在しない。同じビット数、同じファイルサイズでありながら、10.8 ポイント離れている。

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

    解答

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

参考文献 (1)

例題

  • アクション - アクション映画: CRFではファイトシーンでビットレートが3×急上昇し、CBRではバッファが尽きると画質が低下する
  • 画面録画 - 画面録画: CRFでは静止したUI部分でビット数がほぼゼロになり、CBRでは動画再生が始まると画質が急落する
  • スポーツ - 1フレームバッファのスポーツ映像: 複雑さが持続的に高く、CBRの画質は常に圧迫され続ける
  • ドキュメンタリー - CRF 30のドキュメンタリー: ビットレートは中程度で、両モードともに局所的な複雑さのスパイクが見られる