GOP構造ビジュアライザー

ビデオエンコーディングにおける GOP (Group of Pictures) 構造を視覚化して分析します。GOP サイズ、B フレーム数、フレームレートを調整して、圧縮効率とシーク遅延のトレードオフを確認します。

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

GOP の長さは、フレームレートで割るまで何も意味しない 🖖

シーク時間の表示こそ効く数字です。ジャンプやチャンネル切り替えのあと、プレーヤーが何かを表示できるまでの待ち時間そのものだからです。streaming は 30 fps で 24 フレーム、つまり 800 ms。bluray は 24 fps で 48 フレーム — フレーム数は二倍ですが 2000 ms、待ち時間は二・五倍です。フレームレートが低いほど、同じ GOP が時間軸で長く伸びるからです。allIntra は GOP を 1 にして全フレームをキーフレームにします。シークはたった一フレーム、33 ms で済みますが、その代金は送るすべてのフレームのビットレートで払います。

動画のシークが時々ずれる理由 🖖

動画がすべてのフレームを丸ごと保存することはめったにありません。完全な画像を持つのはIフレーム(キーフレーム)だけで、PフレームとBフレームは近くのフレームからの変化だけを記述します。GOPとは、あるキーフレームから次のキーフレームまでの一区切りです。シークバーをドラッグすると、プレーヤーは直前のキーフレームからしかデコードを再開できず、そこから目標位置まで前方に再構築します。そのため長いGOPは容量を節約できますが、シークは遅く不正確になります。

データモッシュ:壊れたキーフレームの芸術 🖖

Pフレームは実際の画像内容ではなく動きだけを運ぶため、映像作家はあえてIフレームを削除し、デコーダーが古いピクセルを新しい動きベクトルに沿って引き延ばし続けるようにします。こうしてカニエ・ウェストのWelcome to Heartbreak(2009年)やChairliftのEvident Utensilといったミュージックビデオで見られる、溶けてにじむ「データモッシュ」の質感が生まれます。キーフレームを失ったストリームを台無しにするのと同じ破損が、意図的な美学になるのです。

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

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

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

GOP構造ビジュアライザー — どのフレームを単独で符号化し、どれを差分として符号化するかを決める

入ってくるもの
標本化されたフレームの列。まだ 1 枚も符号化されていません。
出ていくもの
割り当て。I フレームは単独で、P と B フレームは参照フレームに対して符号化されます。
次の段が前提とすること
動き推定が走るのは P と B フレームだけです。I フレームはそれを完全に飛ばします。
ここで壊れるもの
この段は、あるフレームについて次の段がそもそも走るかどうかを決めます。つまり第 04 段に先行するだけでなく、その実行を制御しています。I フレームの間隔を長くすると圧縮は大きく良くなり、シークは悪くなります。任意の位置に到達するには、直前の I フレームから前向きに復号しなければならないからです。

全プロセスの詳細解説

  1. 24 fpsでの48フレームのフレーム構成と平均フレームサイズ 6 ステップ

    Blu-rayスタイルのGOP(Group of Pictures):48フレーム、参照間の3連続Bフレーム、24 fpsで再生。 Iフレームのコストを100相対単位、Pフレームを12、Bフレームを6とします。フレームの構成比率と平均フレームサイズを求め、さらに長いGOPによってどれだけの圧縮効果がまだ得られるかを計算してください。

    1. 1つのIフレームがグループの先頭に配置され、残り47スロットとなります。それらのスロットは4フレーム単位(3つのBフレームとそれらを固定するPフレーム)を繰り返しますが、47は4の倍数ではありません。47 = 11 × 4 + 3 であるため、11個の完全な単位と、末尾に残された3つのBフレームとなります。

    2. これにより、11個のPフレームと 33 + 3 = 36 個のBフレームが得られます。確認してみましょう: 1 + 11 + 36 = 48。

    3. 各タイプにそのコストで重み付けします。グループ全体で 100 + 132 + 216 = 448 単位となり、フレームあたり 448 / 48 = 9.3 となります。全Intra(All-Intra)ストリームはすべてのフレームで100を支払うため、この構造は同じ48枚の画像に対して10.7倍小さくなります。

    4. その代償はレイテンシとして現れます。グループの途中からデコードを開始することはできません——すべてのPフレームおよびBフレームは他のフレームとの相対関係で定義されているため、シークを行うとIフレームに着地し、そこから前方へデコードします。最悪のケースは48フレーム全体であり、24 fpsでは 2 s となります。

    5. 次に下限(フロア)を求めます。各反復単位のコストは4フレームで 3 × 6 + 12 = 30 単位、すなわちフレームあたり 7.5 であり、GOPを長くしてもこれらの単位が追加されるだけです。グループからそのレートを差し引くと、 448 - 7.5 × 48 = 88 単位が残ります。

    6. これらの88は1つの数値、すなわちIフレームが取って代わるPフレームに対するプレミアムである 100 - 12 です。プレミアムはグループの長さに伴って増大しないため、長さに拘わらず88であり、平均は S̄ = 7.5 + 88/N となります。長さを2倍にしてテストしてみましょう。N = 96 の場合、フレームあたり 7.5 + 88/96 = 8.4 単位となります。

    解答

    どんなGOP長であっても下回ることのできない7.5という下限に対し、フレームあたり9.3単位となります。 トレードオフの2つの側面は逆方向に拡大し、見た目ほどどちらも線形ではありません。得られる余地は 88/N として減少する一方で、シークレイテンシは N/24 として上昇します。48フレームでは、下限を1.8単位上回っています。長さを2倍の96にすると、そのうち0.9(フレームサイズの10%未満)が回収されますが、最悪シーク時間としてさらに 2 s のコストがかかります。再度2倍にすると0.46が回収されますが、さらに 4 s のコストがかかります。したがって、選択する価値のあるGOP長は、追い求める圧縮率によって決まるのではなく、許容できるレイテンシによって決まります。数十フレームを超えると、1つのIフレームがもう少し平準化されることだけが、残された利益のすべてとなります。

参考文献 (1)

例題

  • 低遅延 (IP) - GOP=4、Bフレームなし: シーク速度は最大、圧縮率は最小 — リアルタイム配信でよく使われる
  • Web ストリーミング (IBBP) - GOP=24、Bフレーム2枚: シーク遅延は約800 ms、圧縮率は良好 — 一般的なVOD配信向け
  • Blu-ray (IBBBP) - GOP=48、Bフレーム3枚: シーク遅延は約2 s、圧縮率は最良 — 標準的なBlu-ray
  • All-Intra (I のみ) - オールイントラ: すべてのフレームがIフレーム — 画質は最高だが、Bフレームを使う場合より5–10×大きい