アダプティブビットレートストリーミング(ABR)
アダプティブビットレートストリーミングは、1本の動画を複数の解像度・ビットレートで同時にエンコードし、現在のネットワーク状況に最適なバリアントをプレイヤーが選ぶ手法です。画質の切り替えはセグメント境界で発生し、視聴者にはほぼ気づかれません。
ABRが解決する問題
2010年代以前、動画は固定ビットレートの単一ファイルとして配信されていました。回線が遅ければバッファリングが続き、光回線でも他人と同じ低画質を見ることになりました。どちらにせよミスマッチでした。
ABRはこれを解消します。エンコーダーは360p / 540p / 720p / 1080p / 4Kといったラダー状のバリアントを生成し、プレイヤーは実際の帯域に合うものを選択します。帯域が変わると(モバイルでトンネルに入るなど)、プレイヤーは下のバリアントへ落とし、後で戻します。
プレイヤーの判断方法
- プレイヤーがマスタープレイリストを取得し、全バリアントと帯域要件を読み取ります。
- 最初のセグメントのダウンロード時間を計測します。
- スループット(帯域)を算出します。
- 持続的なスループットが次の上位バリアントの帯域要件を余裕をもって超えれば、次のセグメント境界で上に切り替えます。
- セグメントのダウンロードが詰まる、またはバッファが閾値以下になれば即座に下に切り替えます。
この判断ロジックはABRロジックと呼ばれることがあり、プレイヤー(HLS.js、Shaka Player、ExoPlayer、AVPlayer)ごとにヒューリスティックが異なります。
なぜ今やこれが標準なのか
- モバイルの帯域は変動する — 走行中、エレベーター内、地下
- ネットワークの共有 — 同居人が視聴中にダウンロードを始める
- CDNエッジの変動 — エッジごとにアップリンクが異なる
- 離脱の防止 — バッファリング1回ごとに視聴者を失う
ABRと暗号化
暗号化(AES-128)はセグメント単位で適用されるため、ABRからは透過的です。プレイヤーがバリアントを切り替えても、同じ鍵配送機構で新バリアントのセグメントを復号できます。AVCaptionはバッチごとに鍵をローテーションし、バリアント切替をまたいでもシームレスに動きます。