信号・規格編集納品配信

Bフレーム

Bi-directional predicted frame / ビーフレーム

前のフレームと後ろのフレームの両方を参照して差分を記録する圧縮フレームのことです。同じ画質ならデータ量を最も小さくできる一方、フレームを並べ替えて符号化するため遅延が増えます。

意味
表示順で前と後ろの両方のフレームを参照して符号化したフレーム
別の呼び方
Bピクチャ、双方向予測フレーム
データ量
IフレームやPフレームより小さくなることが多い
符号化の順番
参照する後ろのフレームを先に送るため、表示順と並びが入れ替わる
遅延
並べ替えのぶん、エンコードとデコードの両方で待ちが生じる
H.264のプロファイル
Baselineでは使えない。MainやHighで使える
設定の目安
x264の `bframes` の既定は3枚。低遅延の配信では0にする
参照Bフレーム
Bフレームを他のBフレームの参照に使う構造。Bピラミッドと呼ぶ

エンコーダの設定に「Bフレーム 3」のような欄があり、ライブ配信の手引きでは0にするよう書かれていることがあります。Bフレームは前後の両方を見て差分を作るのでよく縮みますが、そのために映像を並べ替えて処理する必要があり、その並べ替えが遅延になります。

Bフレームが使われる場面

ファイルとして配る動画では、Bフレームを入れるのが標準的です。H.264やHEVCで書き出したMP4、放送で使われるMPEG-2のストリームはいずれもIBBPのような並びを取り、同じビットレートでも画質を稼げます。Blu-rayやオンデマンド配信のファイルも同様です。

一方、遅延を詰めたいライブでは外します。スポーツ中継の低遅延配信や、双方向のやり取りがある場面ではBフレームを0にし、IフレームとPフレームだけで組みます。LL-HLSのように1秒未満の区切りで送る方式でも、並べ替えの待ちは邪魔になります。

古い端末や組み込み機器に向けた配信でも外すことがあります。H.264のBaselineプロファイルはBフレームを使えない決まりなので、Baselineを指定した時点で自動的にIフレームとPフレームだけの構成になります。

Bフレームの仕組みと符号化の順番

Bフレームは、前のフレームと後ろのフレームの両方から予測します。人が横切って背景が隠れ、また現れるような場面では、後ろのフレームに写っている背景を使えるため、前だけを見るPフレームより少ないデータで表せます。

ここで問題になるのが順番です。後ろを参照するには、そのフレームを先に復号しておく必要があります。そこでエンコーダは表示順を組み替え、参照される側を先に送ります。表示順がI・B・B・Pなら、符号化と伝送の順はI・P・B・Bになります。ファイルの中では、この2つの順番をPTSとDTSという別々のタイムスタンプで管理します。

並べ替えのために、エンコーダは後ろのフレームが入ってくるまで出力を待ちます。Bフレームを3枚挟む設定なら、その枚数ぶんの入力を待ってから送り出すので、フレーム数に応じた遅延が積み上がります。Bフレームを0にすると遅延が減るのは、この待ちがなくなるからです。

H.264以降では、Bフレームを他のBフレームの参照に使えます。この構造をBピラミッド、参照Bフレームと呼び、圧縮率はさらに上がりますが、参照の関係は複雑になります。

Bフレームの設定で間違えやすい点

多いのは、遅延の原因を回線だけで探してしまうことです。配信の遅延が数百ミリ秒ぶん想定より大きいときは、エンコーダのBフレームの枚数と先読みの設定を先に確かめてください。x264では bframes に加えて rc-lookahead も遅延に効きます。

編集用の素材にBフレームの多いファイルを使うのも、つまずきやすい点です。任意の1コマを出すには前後のフレームを復号する必要があり、コマ送りやスクラブが重くなります。編集ではオールイントラの素材か、プロキシに置き換えて進めるのが確実です。

納品仕様でBフレームの有無やGOPの構造が指定されることもあります。書き出したファイルの実際の並びは、ffprobeでフレームの種類を出せば確認できます。

よくある質問

Bフレームは0にしたほうがよいですか

低遅延が要るライブ配信では0が向いています。ファイルとして配る動画や録画では、入れたほうが同じ画質で容量を抑えられるので、そのまま使ってかまいません。

Bフレームは何枚が適切ですか

汎用のエンコードでは2枚から3枚あたりが一般的で、x264は既定で3枚を使います。増やすほど縮みは良くなりますが、効き目は次第に小さくなり、遅延と処理時間は増えます。

Bフレームを使うと画質は落ちますか

同じビットレートなら、むしろ上がる方向に働きます。差分の記録に使うデータが減り、そのぶんを他のフレームに回せるためです。画質が落ちたように見えるときは、ビットレート自体か参照の設定を見直してください。

似ている形式との違い

名前主に使う場面Bフレームとの違い
Pフレーム低遅延の配信前だけを参照する。並べ替えが不要で遅延が増えない
Iフレーム頭出し・編集の起点何も参照せず単独で復元できる。Bフレームとは正反対の性格
GOP圧縮のまとまりBフレームを何枚挟むかを含めた並び全体を指す言葉

関連する用語

最終更新