HTTPS だけで 4K AV1 をブラウザ再生 LIVE

プラグイン不要・WebRTC 不要・SFU 不要。HTTPS だけで、復号は全てブラウザ内 WebAssembly で完結します。

ポジション: HLS/DASH より低遅延 (1–2 秒 vs 2–10 秒)、WebRTC より配信側がシンプル (signaling サーバ不要、STUN/TURN 不要、SFU 不要)。監視 / VMS / 教育配信など、 UDP やインフラ更新に依らずに 4K AV1 を任意のモダンブラウザに届けたい用途を想定。

« Demo 一覧に戻る

ポジション (短い比較表)

ライブ映像エンジニアが普通に検討する選択肢との対比です:

  本デモ WebRTC HLS Low-Latency 従来 RTMP/HLS
配信プロトコル TCP / HTTPS のみ UDP + STUN/TURN HTTPS HTTPS
サーバ要件 静的 HTTPS + 軽い range/poll endpoint signaling + SFU/MCU origin + CDN RTMP server + transcoder + CDN
Glass-to-glass 遅延 ~1–2 秒 < 0.5 秒 2–4 秒 6–30 秒
プラグイン / native? 不要 不要 不要 不要
4K AV1 ライブ全ブラウザ ○ (dav1d-WASM mt) 実装依存 実装依存 不可 (codec 識別子非対応)
ファイアウォール突破力 通常 HTTPS と同じ 企業/教育環境で UDP block 多数 通常 HTTPS と同じ 通常 HTTPS と同じ

トレードオフは遅延帯です。< 500 ms かつ自分でネットワークも握れるなら WebRTC が依然強い。 それ以外 — 特に UDP がブロックされる環境、SFU を立てるのが過大コストな現場 — では HTTPS-only のこの経路の方が 4K AV1 配信としてシンプルです。

アーキテクチャ

[エンコーダホスト (AI-01Server)]                  [ブラウザ]

  キャプチャ (AV.io 4K HDMI)
        |
        v
  slimenormenc.exe  (av1_nvenc, NVENC)
        |
        v
  live_stream.ivf  (ディスク上で増分追記)
        |
        v
  Node serve_live.js
   - HTTP Range (206)
   - HTTPS (TLS, COOP / COEP / CORP)        |     dav1d.js     (single-thread, ~544 KB)
   - /__reset_live  (再エンコード起動)       | or  dav1d_4t.js  (multi-thread,  ~567 KB)
        |                                   |       ^ SAB + crossOriginIsolated 必須
        +------- HTTP Range polling ------->+       |
                                            |       v
                                            |    Presentation queue (1–2 秒)
                                            |       |
                                            |       v
                                            |    30 Hz 一定間隔 render
                                            |    + NormMap block-skip (spatial gate)
                                            |       |
                                            |       v
                                            |    <canvas>

視聴推奨スペック

視聴端末解像度 / fpsWASM modeHTTPS
2-core mobile / 古い PC720p / 30 fpssingle-thread不要
4-core mobile (Intel 11th gen 等)1440p / 30 fpssingle-thread推奨 (LAN)
4-core mobile + multi-thread4K / 30 fpsmulti-thread (mt)必須 (cross-origin isolated)
8-core+ desktop4K / 30 fps 余裕multi-thread (mt)必須 (LAN/WAN)

multi-thread (dav1d_4t.wasm) は SharedArrayBuffer を使用するため、cross-origin-isolated=true — HTTPS と COOP / COEP / CORP ヘッダ設定が必須です。

ライブ プレビュー & 遅延計測

エンコーダはミリ秒精度のウォールクロックを各フレームに焼き込んで送信します。 映像内の時刻と、下のクロック (視聴端末ローカル時刻) を見比べた差が そのまま end-to-end 遅延 です。目視で測定できます。

読み込み中...
視聴端末ローカル時刻、50 ms 周期更新。

統合検証は個別対応となります — お問い合わせからどうぞ。

ブラウザ側で何が動いているか (技術詳細)
  • HTTP Range polling: live_stream.ivf の末尾を数十ミリ秒周期で取得。差分のみ転送。
  • IVF フレーム抽出: 4-byte size + 8-byte pts ヘッダで切り出して AV1 OBU として dav1d に投入。
  • WASM 復号: dav1d.wasm (~544 KB single-thread) または dav1d_4t.wasm (~567 KB multi-thread)。
  • Presentation queue: 復号済フレームを最大 60 個 (~2 秒) バッファ。OS-level filesystem flush バーストを吸収。
  • 30 Hz 一定 render: setInterval(33ms) で queue から steady drain。脈動なし。
  • NormMap spatial gate: 16x16 ブロック前フレーム差分判定。静止シーンで 99% 以上スキップ。