ビットレート制御:基礎から押さえる
ビットレート制御は動画圧縮の中核を担う仕組みで、出力品質とファイファイルサイズを決定します。FFmpeg には CRF(固定品質)、CBR(固定ビットレート)、VBR(可変ビットレート)という 3 つのモードがあり、CRF は汎用のな圧縮モードとしてもっとも推奨される方法です。
CRF、CBR、VBR の違いを理解するには、まずビットレートそのものについて知っておく必要があります。
ビットレートとは、単位時間あたりに生成される動画データの量で、通常は kbps(キロビット毎秒)または Mbps(メガビット毎秒)で表されます。動画の鮮明さ、滑らかさ、最も終のなファイファイルサイズを直接左右する要素です。解像度、フレームレート、コーデックが同じ場合、ビットレートが高ければディテールを保てますがファイファイルサイズは大きくなり、低ければファイルは軽くなる一方でボヤケ、バンディング、ブロックノイズといった劣化が目立つようになります。
ではなぜビットレート制御が必要なのでしょうか。理由はシンプルで、動画フレームの複雑さが常に変化しているからです。静止した背景や平坦な色の領域はごく少ないデータでロスなく再現できますが、高速な動き、豊富なテクスチャ、急激な変化は鮮明さを保つにはるかに多くのビットを必要とします。動画全体に同じビットレートを強制すると、単純なシーンではストレージが無駄になり、複雑なシーンではビットが足りずに目に見えて劣化します。
ビットレート制御の目的は、ストレージ容量や帯域幅という予算がある中で、フレームごとにビットをインテリジェントに振り分け、品質とサイズのバランスを取ることです。CRF、CBR、VBR の 3 つのモードは、本質的に 3 つの異なるビット配分戦略だと考えると理解しやすいでしょう。
3 つのビットレート制御モードを解説
CRF(Constant Rate Factor)はビットレートを変動させて品質を一定に保ち、CBR(Constant Bitrate)はビットレートを一定にして品質を変動させます。VBR(Variable Bitrate)はその中間で、品質とビットレートを動的にバランスさせる方法です。ファイル圧縮の用途では、CRF モードが視覚のな品質を保ちつつファイファイルサイズを最も小さくできます。
CRF(Constant Rate Factor)
CRF の指針は「品質を一定に保つ」ことです。エンコーダは各フレームの複雑さに応じてビットを動的に配分し、単純なシーンには少ないビットを、複雑なシーンにはより多くのビットを割り当てます。これにより、動画全体を通して知覚される品質が一貫して保たれます。静止した風景のフレームであってもアクション満載のシーンであっても、視聴者はほぼ同じ視覚品質を体験できます。
CRF は 0〜51 の整数で指定します(x264、x265 エンコーダの場合)。値が低いほど高品質でファイルが大きくなり、値が高いほど低品質でファイルが小さくなります。0 はロスレスエンコード、51 は最低品質、23 は一般的に「視覚のにロスレス」とされる基準値であり、x264 のデフォルトでもあります。
CRF の最大の強みは、シンプルさと品質の安定性を兼ね備えている点です。エンコーダがシーンの複雑さに応じて自動的にビットを配分するため、ターゲットとなるビットレートを事前に設定する必要がありません。そのため、CRF はオフライン圧縮、ファイル保存、Web 公開といった、ほとんどの非リアルタイム用途で推奨されるモードです。
CBR(Constant Bitrate)
CBR は再生時間全体を通じてビットレートを一定に保ちます。シーンの複雑さに関わらず、エンコーダは毎秒同じ量のデータを出力します。つまり、単純なシーンでは割り当てられたビットが余剰になりがちで、複雑なシーンではビットが不足してアーティファクトが発生しやすくなります。
CBR の強みは予測可能性とバッファへの優しさです。この特性は、帯域幅の安定性が重要になるライブストリーミングやリアルタイム動画伝送に特に向いています。こうした用途ではネットワーク帯域幅が固定であることが多く、ビットレートが大きく変動するとバッファオーバーフローやネットワーク輻輳、再生のカクつきを引き起こします。CBR は伝送の安定性と引き換えに品質をある程度犠牲にする方法です。
VBR(Variable Bitrate)
VBR は指定された範囲内でビットレートを変動させられます。エンコーダはシーンの複雑さと目標品質を考慮し、設定された最小値と最大値の間でビットレートを調整します。VBR は通常、目標ビットレート(または目標品質)と上下限を設定する必要があり、CBR より柔軟性がある一方、CRF には備わっていないビットレートの上限制約が加わります。
VBR は品質を維持しなながらファイル全体のサイズを抑えたいシーン、例えばストリーミングのセグメントエンコードなどでよく使われます。なお、x264 エンコーダには 2 パス VBR モードも用意されています。1 パス目で動画全体を走査して複雑さの分布を分析し、2 パス目でその分析結果にもとづいてビットを精密に配分します。ターゲットサイズを正確に制御しつつビット配分も最適化できますが、シングルパスのエンコードと比べて約 2 倍の時間がかかるため、ファイファイルサイズに厳しい要件があるオフライン作業に向いています。
3 つのモードのビットレート変動を比較
下の図は、同じ動画に対する 3 つのモードの振る舞いを視覚化したものです。CBR は平坦な水平線になり、CRF と VBR はどちらもシーンの複雑さに従って上下に変動します。CRF はより自由に振れるのに対し、VBR は設定された下限と上限に縛られます。
CRF 値が品質とサイズにえる影響
CRF の値は 0〜51 の範囲で、値が低いほど高品質でファイルが大きくなります。推奨されるレンジは 18〜28 です(18 は視覚のにロスレス、23 はバランス型のデフォルト、28 は実用的な最低品質)。CRF を 6 上げるとファイファイルサイズはおよそ半分に、6 下げるとおよそ倍になります。
CRF モードを使う際、適切な CRF 値を選ぶことがもっとも重要なステップです。下の図は CRF 値が 18 から 30 へと変化するにつれて品質とファイファイルサイズがどう変わるかを示しています。CRF が低いほど高品質でファイルが大きく、CRF が高いほどファイルは小さくなりますが、それと引き換えに品質は犠牲になります。
FFmpeg コマンド例:3 つの典型シナリオ
ここでは、品質とサイズの異なるバランスに対応する 3 つの典型的な圧縮シナリオを紹介します。
シナリオ 1:メール(H.264 + 720p + CRF 28)
メールの添付ファイルにはサイズ制限があるため、動画は積極のに圧縮する必要があります。720p 解像度と CRF 28 を組み合わ使えば、視聴に耐える品質を保ちつつファイファイルサイズを抑えられます。
ffmpeg -i input.mp4 \
-c:v libx264 -preset medium -crf 28 \
-vf "scale=-2:720" \
-c:a aac -b:a 128k \
output.mp4
シナリオ 2:Web 公開(H.264 + 1080p + CRF 26)
Web 動画は鮮明さと読み込み速度のバランスを取る必要があります。1080p と CRF 26 はポピュラーな組み合わせであり、もっとも幅広い互換性も得られます。
ffmpeg -i input.mp4 \
-c:v libx264 -preset medium -crf 26 \
-vf "scale=-2:1080" \
-c:a aac -b:a 128k \
output.mp4
シナリオ 3:アーカイブ(H.265 + 元の解像度 + CRF 20)
アーカイブ用途では品質と圧縮効率の両立が重視されます。H.265 エンコーダを使い、元の解像度を保ったまま CRF 20 を設定すれば、H.264 よりも小さいサイズで視覚のにほぼロスレスの品質を実現できます。
ffmpeg -i input.mp4 \
-c:v libx265 -preset medium -crf 20 \
-c:a aac -b:a 192k \
output.mp4
主なパラメータを簡単に補足します。-c:v は動画コーデックを指定し、libx264 は H.264、libx265 は H.265 に対応します。-preset はエンコード速度と圧縮効率のトレードオフを制御し、遅いプリセットほど圧縮率が高くなります。-crf は品質レベルを設定します。-vf "scale=-2:720" は高さを 720 ピクセルにスケーリングしつつ、アスペクト比を保った幅を偶数に丸めて計算します。-c:a aac -b:a 128k は音声を AAC で 128 kbps にエンコードする指定です。
CRF 値の選び方ガイド
下の表は、よく使われる CRF 範囲を一覧で示したものです。実際の運用では、用途に応じた推奨レンジの中央値から始め、短いクリップでテストエンコードを行い、その結果から微調整するのがおすすめです。
| CRF 範囲 | 品質レベル | ファイファイルサイズ | 用途 |
|---|---|---|---|
| 18〜22 | 高品質 | 大 | アーカイブ、ソースバックアップ、高品質再生 |
| 23〜26 | 標準 | 中 | Web 公開、オンデマンド配信、モバイル再生 |
| 27〜30 | 高圧縮 | 小 | メール、インスタントメッセージ、帯域幅に制約のある配信 |
CRF・CBR・VBR の比較
下の表は品質、サイズ、エンコード速度、用途の観点で 3 つのモードを比較したものです。目的に合わせて選ぶ際の参考にしてください。
| 観点 | CRF | CBR | VBR |
|---|---|---|---|
| 品質の安定性 | 高い(全体で一貫) | 低い(複雑なシーンでアーティファクト) | 中程度(ビットレート上限に縛られる) |
| ファイファイルサイズ | 予測しにくい | 予測しやすい | ほぼ予測できる(2 パスならより正確) |
| エンコード速度 | 高速(シングルパス) | 高速 | 遅い(2 パスは約 2 倍の時間) |
| 用途 | オフライン圧縮、ファイル保存、Web 公開 | ライブストリーミング、リアルタイム伝送 | ストリーミング配信、サイズ制約のあるタスク |
よくある質問
1. 適切な CRF 値はどのように選べばよいですか?
万能な CRF 値は存においてせず、品質とサイズのトレードオフによって決まります。CRF 23〜26 が出発点として適切で、品質に余裕があれば値を少しずつ上げてさらにファイファイルサイズを絞り、不足するようであれば値を下げます。アーカイブ用途なら 18〜22、ファイファイルサイズを特に重視する配信なら 27〜30 が目安です。
2. 圧縮た動画がぼやけて見える場合はどうすればよいですか?
ぼやけは多くの場合、ビットレートの不足または過剰な解像度の縮小が原因です。順に確認してください。まず CRF 値を下げます(たとえば 28 から 24 へ)。これでエンコーダにより多くのビットをとえられます。次に、解像度を縮小しすぎていないか確認し、必要なら元に戻します。3 番目に、slow や slower など、より遅いプリセットへの切り替えを検討してください。エンコード時間は長くなりますが、圧縮品質は良くなります。最後に、ノイズ除去やインターレース解除のフィルターを必要以上に強くかけていないか確認します。設定が強すぎると映像が柔らかくなることがあります。
3. H.264 と H.265 はどちらを選ぶべきですか?
H.264 はもっとも広い互換性を持ち、実質すべての最も新デバイス、OS、ブラウザでサポートされています。Web やモバイルへの配信など、幅広い環境で再生させたい場合に最適です。H.265(HEVC)はより効率的で、同じ品質なら H.264 よりおよそ 30〜50% ファイファイルサイズを小さくできます。ただしエンコードは遅く、一部の古いデバイスやブラウザでは対応していません。目的がアーカイブや最も新デバイス向けの配信であれば H.265 を優先し、最大限の互換性が必要なら H.264 を選ぶのが無難です。
まとめ
ビットレート制御は動画圧縮の根幹であり、適切なモードを選ぶことは個別のパラメータを調整する以上に重要な意味を持ちます。CRF は一定の品質を最優先し、オフライン圧縮やファイル保存における第一の選択肢です。CBR はビットレートの安定性を最優先し、ライブストリーミングやリアルタイム伝送に向いています。VBR は両者の中間に位置し、ファイファイルサイズに制約のある配信用途に適しています。
実際には 3 つのポイントを押さえれば多くのケースをカバーできます。用途に合ったビットレート制御モードを選ぶこと、適切な CRF 値を選びテストエンコードの結果を踏まえて微調整すること、そして互換性の要件に応じて H.264 と H.265 を使い分けることです。速度と効率のトレードオフを制御するプリセットの調整と組み合わ使えば、FFmpeg はあらゆるシーンで品質とサイズの良いバランスを取った動画を出力できます。
関連記事:
ファイルの圧縮でお困りですか?SmartSlim をお試しください
自社開発の Rust 圧縮エンジンをベースに、PDF/画像/動画/Office/OFD など 10 大カテゴリ 40 以上の形式に対応。ローカル圧縮のためデータは外部に送信されません。