画質は一定に、サイズは変動する
CRFはConstant Rate Factor(固定品質係数)の略で、その名前が考え方をそのまま表しています。エンコーダーに使うビット数を指示する(「8 Mbpsのファイルにして」)のではなく、保ちたい画質を指示し(「この見え方を維持して」)、そのために必要なだけビットを使わせるのです。静かなインタビューの場面はわずかなビットで十分きれいに見えますが、紙吹雪が舞うアクションシーンには大量のビットが要ります。CRFなら、エンコーダーがシーンごと、フレームごとに配分を決められます。
実際の結果として、ファイルサイズは読めなくなる代わりに、画質が安定します。同じCRFでエンコードした10分の動画2本は、サイズが5倍違うこともありますが、それぞれの元素材に対する見え方の良さは同じです。どこかで再生するためにファイルを変換する、録画を小さくする、クリップを公開するといった日常のエンコードでは、ほぼ常に求めているのは「一定の画質」のほうです。x264エンコーダーやMediamorphyの変換機能がCRFを既定モードにしているのは、そのためです。
数値の読み方
H.264(x264)のCRFは0から51までの範囲で、最初はこの向きに戸惑う方が多いところです。数値が小さいほど高画質でファイルは大きくなります。実用的に意味があるのは、ごく狭い範囲です。
| CRF | 得られるもの | 使いどころ |
|---|---|---|
| 0 | 数学的に可逆。ファイルは非常に巨大 | ほぼ出番なし — 「最高画質の推奨値」ではありません |
| 17〜18 | 視覚的に可逆。通常の視聴では違いがわからない | マスターのアーカイブ、再編集する予定の素材 |
| 22〜23 | 優れた画質と妥当なサイズ — いちばんおいしい範囲 | 共有・アップロード・一般用途の既定値 |
| 26〜28 | 良好な画質で、ファイルは明らかに小さい | メッセージアプリ、メール、容量が限られる場面 |
| 30以上 | 複雑なシーンで甘さやブロックノイズが見える | 見た目よりサイズがはるかに重要なときだけ |
非常に役立つ目安があります。CRFが6動くと、ファイルサイズはおよそ半分または2倍になります。23から29にすればファイルは半分に、23から17にすれば2倍です。おかげでCRFは考えやすい数値になっています。今の出力が「大きすぎる」のか「シャープさが足りない」のかを判断し、数値を数ポイント動かせば、結果がだいたい予想できるからです。
CRFとビットレート — それぞれの得意分野
CRFの対極にあるのがビットレート指定です。特定のデータレートを要求すれば、エンコーダーは映像がそれを必要としていようといまいと、その値に合わせます。サイズやレートそのものが制約になっている場面、たとえば上り帯域の範囲内で行うライブ配信や、添付ファイルの上限のような厳しい制限に収める場合には、こちらが正解です。一方、画質を狙う道具としては不適切です。固定レートは簡単なシーンに使いすぎ、難しいシーンでは足りなくなるからです。
ストリーミングプラットフォームは、アップロードされたものをどのみち再エンコードします。特定のビットレートに事前圧縮しても、ほとんど意味がありません。保存に耐えられる範囲で最高画質のファイルをアップロードし、圧縮はプラットフォームに任せましょう。ビットレートが実際に何を測っている数値なのか、解像度やフレームレートとどう関わるのかは、ビットレート・解像度・フレームレートのガイドで詳しく解説しています。
CRFにできないこと
CRFが制御しているのは、与えられた映像をどれだけ忠実に保つかであって、すでに失われたものを取り戻すことはできません。ぼやけて圧縮を掛けすぎた素材をCRF 17で再エンコードしても、同じようにぼやけた映像の大きなファイルができるだけです。エンコードの連鎖の中で画質は下る一方なので、最良の結果は常に、別のエンコーダーを通過済みのコピーではなく元のファイルを変換することから生まれます。
再エンコードを繰り返すと、これはさらに悪化します。非可逆の処理を通るたびに情報が少しずつ捨てられ、誤差が積み重なっていきます。コピーのコピーを取り続けるようなものです。前の変換の出力をさらに変換するのではなく、元素材から最終的なフォーマットと設定へ一度で変換しましょう。世代劣化と呼ばれるこの現象は音声にも当てはまり、音声フォーマットのガイドで扱っています。
考えすぎずに値を決める
単純な手順で、ほぼすべてのケースに対応できます。
- 迷ったら? 23を使いましょう。既定値になっているのには理由があり、多くの素材で、ほとんどの人は元ファイルとの違いを見分けられません。
- 長期保存する、または後で編集する? 18を使い、サイズは受け入れましょう。
- ファイルが大きすぎた? 3〜5ポイント足して、元のファイルから変換し直します。解像度を1段下げることも検討しましょう。大幅に減らしたいときは、解像度とCRFを組み合わせるのがいちばん効果的です。詳しくはファイルサイズのガイドをご覧ください。
- 出力が甘い、またはブロックが見える? 3〜5ポイント引いて、こちらも元のファイルから変換し直します。
試し方のコツ:設定を確認するために1時間の動画を丸ごと変換するのではなく、静かな場面と動きの多い場面を含む30秒ほどを切り出して変換し、結果を確認しましょう。Mediamorphyにトリミング機能があるのは、まさにこのためでもあります。長いエンコードに踏み切る前に、短い抜粋で画質を詰められます。
数値1つで、ほとんどをコントロールできる
コーデックは取っつきにくく、動画技術は実際に奥が深い分野です。それでも、日々使うレバーはごくわずかです。どこで再生できるかを決めるのはコンテナとコーデック、どれくらいの大きさでどれくらいきれいに見えるかを決めるのは、圧倒的に解像度とCRFです。ファイルが重すぎるときは数値を上げ、甘く見えるときは下げる。これができるようになれば、実用的な動画エンコードについて、普通は必要とされる以上のことを知っていることになります。