LL-HLS/CMAFで低遅延配信
背景
LL-HLS はチャンク化と高頻度のプレイリスト更新でセグメント先頭から逐次転送し、ガラス越し会話レベルの往復遅延を狙います。CMAF(fMP4) を前提に、エンコーダ/GOP/プレイリスト/CDN/プレイヤーの整合が重要です。
要点(TL;DR)
- セグメント2s / PART 0.5s — 細かい先出しで TTS を短縮。
失敗例: PART が大きすぎると低遅延にならない。 - キーフレーム=セグメント境界 — 切替破綻を抑制。
関連: GOP最適化。 - ライブオフセット 2〜3s — 遅延と安定のバランス。
極端に短いと再バッファ増。 - 初期はSDで即開始 — 先に“音だけ”も可。
関連: メトリクス。
落とし穴
キーフレーム間隔とチャンク境界がズレると切替破綻が起きます。ABRラダー設計と一緒に決め切りましょう。
1. 最短フロー(A/B導入)
- 従来HLSで ABR/GOP を安定化 → 低遅延のベースラインを確立。
- 同じエンコード設定で LL-HLS を並走、ライブオフセット=2.5s を初期値に。
- CDN で HTTP/3 と早期フラッシュ・短命TTL を適用(プレイリスト/パート)。
- プレイヤーで PART 受信を有効化し、初期解像度を低めに固定 → 徐々に昇格。
- 同期間・同セグメントで KPI を比較し、SLO をセット。
2. 観測とSLO
追いかけ再生時のライブオフセット、バッファ不足、切替回数/失敗、再生開始までのTTFB/TTS(time-to-start)を 再生メトリクス に組み込み、回帰を検知します。
- TTS p95 ≤ 1.0s、ライブオフセット 2–3s、切替失敗率 < 1% を初期目標に。
- コールド/ウォームを分け、ネットワーク(H/2/H/3)別で集計。
- 欠落パート/タイムスタンプ逆行をイベントで記録し原因分析。
3. アーキテクチャとCDN
- H/3 + Early Hintsで初期取得短縮、LLパートは短命TTL/キャッシュキー最適化。
- Origin負荷回避: Prefetch/Preconnect、プレイリストとパートの整合。
- DRM併用時: ライセンスAPIのレイテンシ監視とフォールバック経路。
プレイリスト例(LL-HLS/CMAF)
#EXTM3U
#EXT-X-VERSION:9
#EXT-X-SERVER-CONTROL:CAN-BLOCK-RELOAD=YES,PART-HOLD-BACK=1.5
#EXT-X-TARGETDURATION:2
#EXT-X-PART-INF:PART-TARGET=0.5
#EXT-X-MEDIA-SEQUENCE:12345
#EXT-X-PROGRAM-DATE-TIME:2025-09-10T12:00:00Z
#EXT-X-MAP:URI="init.mp4"
#EXTINF:2.000,
#EXT-X-PART:DURATION=0.5,URI="seg12345.part0.m4s"
#EXT-X-PART:DURATION=0.5,URI="seg12345.part1.m4s"
#EXT-X-PART:DURATION=0.5,URI="seg12345.part2.m4s"
#EXT-X-PART:DURATION=0.5,URI="seg12345.part3.m4s"
seg12345.m4s
#EXT-X-PRELOAD-HINT:TYPE=PART,URI="seg12346.part0.m4s"
HOLD-BACK 設計の指針
// HOLD-BACK 設計の目安
// TARGETDURATION(=2s) と PART-TARGET(=0.5s) を基準に、
// HOLD-BACK >= 3 * TARGETDURATION, PART-HOLD-BACK >= 3 * PART-TARGET
// 例: HOLD-BACK=6.0s, PART-HOLD-BACK=1.5s
4. パラメータとハマりどころ
- PART-TARGET が大きい/不均一
TTS悪化・オフセット揺れ。エンコーダ/パッケージャで均一化。 - GOP とパート境界が不一致
切替破綻・再バッファ。GOP整合。 - プレイリスト頻度が不足
新規 PART に追随できず遅延が積み上がる。 - CDN キャッシュ不整合
プレイリスト/パートで TTL/キーを分け、早期フラッシュ。
まとめ
低遅延は“設計の整合”が9割。キーフレーム×チャンク境界×プレイリスト頻度の三点を固め、UI動画では 短尺UI動画の最適化 と ポスターを併用すると体験が破綻しません。
公開前チェック
- GOP=2s/キーフレーム=セグメント先頭、PART=0.5s が揃っている。
- HOLD-BACK/PART-HOLD-BACK が仕様に適合し、ライブオフセット2–3s。
- HTTP/3・早期フラッシュ・短命TTLが有効、CDN/Originの整合あり。
- 初期再生はSDで確実に開始、ABR昇格で破綻しない。
FAQ
FAQ(よくある質問)
1ガラス越し会話レベル(3秒未満)を達成する設計
セグメント2秒/パート0.5秒、キーフレーム=セグメント境界、H/3有効化、CDNの早期フラッシュでTTSを短縮。
UIは音のみ先行/初期SDで開始し、ポスター/LQIPで空白時間を隠蔽します。
2切替破綻を減らすには?
GOP/キーフレームをパート境界と一致、ABRラダーのビットレートと解像度を段階的に整理。欠落パートは早期リトライ/フォールバック。
3メトリクスとSLOの例
再生開始TTS p95 1.0s、ライブオフセット 2.0〜3.0s以内、切替失敗率 <1%、完走率の劣化なし。