Fix hosted live playback
This commit is contained in:
parent
340e2346ba
commit
6739b424ab
4 changed files with 142 additions and 72 deletions
|
|
@ -0,0 +1,27 @@
|
|||
# ECP-0117: Live Fragment Duration and Audio Unlock
|
||||
|
||||
Status: Draft
|
||||
|
||||
## Problem / context
|
||||
|
||||
Hosted live playback can subscribe to a local HDHomeRun stream while the visible frame stays frozen and audio stays muted. Browser inspection showed `currentTime` advancing through keyframe-spaced buffered ranges, but each range was only one microsecond long. The web wrapper also left the `<moq-watch muted>` attribute in place, so a user gesture could be overwritten back to muted.
|
||||
|
||||
## Decision
|
||||
|
||||
Publish WebTransport fMP4 with keyframe-duration fragments (`frag_keyframe`) instead of one fragment per frame, and default `wt-publish` / `nbc-wt-publish` to the non-passthrough CMAF sample path. On the hosted web player, remove the `muted` attribute and reapply unmuted state to both the wrapper and underlying video element after a user gesture.
|
||||
|
||||
## Consequences
|
||||
|
||||
- Browser MSE receives continuous segment-duration ranges instead of isolated zero-length frame ranges.
|
||||
- Live playback accepts GOP-sized fragment latency, matching the current 48-frame live GOP.
|
||||
- Relay subscribers receive `video0.m4s` and `audio0.m4s` media groups by default instead of catalog-only passthrough announcements.
|
||||
- Audio remains gesture-gated for autoplay policy, but the gesture now actually unmutes the player.
|
||||
|
||||
## Alternatives considered
|
||||
|
||||
- Raise web jitter again. Rejected because the buffered media ranges were effectively zero-length; more latency does not turn still ranges into playable media.
|
||||
- Keep passthrough mode as the default. Rejected because relay probes received only `catalog.json` while the non-passthrough sample path delivered video and audio media groups.
|
||||
|
||||
## Rollout / teardown
|
||||
|
||||
Rebuild/restart local and hosted publishers, deploy the updated web asset, and verify hosted playback by checking frame hashes over time. Teardown is restoring `WT_PUBLISH_MOVFLAGS` to `frag_every_frame`, restoring passthrough defaults to true, and restoring the prior muted wrapper behavior.
|
||||
Loading…
Add table
Add a link
Reference in a new issue