gazou-compressor.jp

LL-HLS/CMAFで低遅延配信

背景

LL-HLS はチャンク化と高頻度のプレイリスト更新でセグメント先頭から逐次転送し、ガラス越し会話レベルの往復遅延を狙います。CMAF(fMP4) を前提に、エンコーダ/GOP/プレイリスト/CDN/プレイヤーの整合が重要です。

先に結論
まずは非低遅延(従来HLS)で ABR と切替安定を固め、次に LL パラメータを段階導入。ABRラダーGOP整合を先に決めると破綻が減ります。

要点(TL;DR)

落とし穴
キーフレーム間隔とチャンク境界がズレると切替破綻が起きます。ABRラダー設計と一緒に決め切りましょう。

1. 最短フロー(A/B導入)

  1. 従来HLSで ABR/GOP を安定化 → 低遅延のベースラインを確立。
  2. 同じエンコード設定で LL-HLS を並走、ライブオフセット=2.5s を初期値に。
  3. CDN で HTTP/3 と早期フラッシュ・短命TTL を適用(プレイリスト/パート)。
  4. プレイヤーで PART 受信を有効化し、初期解像度を低めに固定 → 徐々に昇格。
  5. 同期間・同セグメントで KPI を比較し、SLO をセット。

2. 観測とSLO

追いかけ再生時のライブオフセット、バッファ不足、切替回数/失敗、再生開始までのTTFB/TTS(time-to-start)を 再生メトリクス に組み込み、回帰を検知します。

3. アーキテクチャとCDN

プレイリスト例(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. パラメータとハマりどころ

まとめ

低遅延は“設計の整合”が9割。キーフレーム×チャンク境界×プレイリスト頻度の三点を固め、UI動画では 短尺UI動画の最適化ポスターを併用すると体験が破綻しません。

公開前チェック

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%、完走率の劣化なし。

gazou-compressor.jp 編集部

画像圧縮・変換・背景除去などの実践テクニックと、Webで“速く・軽く・崩さない”ためのノウハウを発信しています。

関連記事

トピック/更新日の近いコンテンツ