every.channel/evolution/proposals/ECP-0078-live-video-tag-first-with-audio-unlock.md
2026-02-24 23:24:47 -08:00

968 B

ECP-0078: Live <video>-First Rendering With Gesture Audio Unlock

Context

Live browser playback currently prioritizes canvas rendering. Audio can fail on first load due to autoplay policy (AudioContext was not allowed to start) and we still need a robust <video> rendering path for native controls.

Decision

In the web watcher mount path:

  1. Render live playback with a <video> child in <moq-watch> first.
  2. Start muted at the watcher signal layer for autoplay compatibility, then unlock audio on first user gesture by:
    • forcing backend muted=false, volume=1,
    • toggling paused state to trigger resume,
    • unmuting the <video> element.

Rationale

  • Preserves the <video> UX target while handling browser autoplay constraints explicitly.
  • Keeps changes local to app wiring without forking upstream MoQ player internals.

Reversibility

  • Remove the unlock wiring (or return to canvas renderer) to restore prior behavior.