Use native web playback with shared Rust media preparation #9
Loading…
Reference in a new issue
No description provided.
Delete branch "codex/native-playback"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Video and audio now use browser-native controls, with owner-only Media Session metadata, transport actions and position updates. The retained player and Rust playback session survive view navigation; the mini player keeps title, creator and artwork independently of the visible library view.
Move the existing native playback/CMAF planners into media-processing-core, consumed by both native code and browser WASM. Browser remuxing uses the Rust track plan and the same fragmented-MP4 muxer settings as native FFmpeg; remove duplicated JavaScript codec and CMAF-selection policies. Prefer receipt-verified HLS bound to the exact pinned source. Unsupported containers can use a bounded, disk-backed FFmpeg packet copy before the existing decoder fallback. Ship a pinned small libav.js runtime with matching downloadable source archives.
Validation: 786 server tests pass (4 ignored), 18 shared-processing tests, 531 web tests, formatting, TypeScript, WASM and production builds. Actual Safari played the Rust-planned HEVC/hvc1 fragmented MP4 with native fullscreen and Picture in Picture. Chrome verified playback, seeking, local-cache reuse and cancellation; all 120 video and 217 audio packets were preserved.
Limits: browser outputs remain local cache files. Client artifact uploads, automatic CMAF preparation and hardware-transcode adapters are not implemented here. iPhone background playback and receiver-side AirPlay have not been validated.