muxinc/elements

Feature Request: Add support for Managed Media Source API

Opened this issue · 3 comments

Is there an existing issue for this?

  • I have searched the existing issues

Which Mux Elements/Packages does this apply to? Select all that apply

mux-video, mux-video-react, playback-core

Description

Hi!

Last year, Apple introduced the Managed Media Source API, which is supposed to have the capabilities of MSE, without any of the drawbacks, and also works on iOS!

Could this be implemented into elements, and added to prefer-playback in mux-video?

Related issues/resources:
Dash-Industry-Forum/dash.js#4202
https://webkit.org/blog/14735/webkit-features-in-safari-17-1/
https://developer.apple.com/videos/play/wwdc2023/10122/

Expected Behavior

MMS support would be implemented throughout the package, and prefer-playback='mms' would be an option in mux-video.

Hey @jakubslambor this is definitely on our radar! Since we rely on hls.js "under the hood" for our "playback engine," which already supports ManagedMediaSource in the latest version (https://github.com/video-dev/hls.js/blob/master/docs/API.md#prefermanagedmediasource), we're hoping this will be fairly straightforward to support once we get the bandwidth to do the relevant upgrades and tweaks. From a "devex"/"developer ergonomics" perspective, do you foresee any issues with treating this as just a variation on "mse" for preferred playback? aka, would you foresee any issues if prefer-playback="mse" would simply use ManagedMediaSource in environments like iOS, or do you think that level of granularity/specificity will be fine?

That's great to hear!

From a "devex"/"developer ergonomics" perspective, do you foresee any issues with treating this as just a variation on "mse" for preferred playback?

I can't speak for everyone, but for us no, if prefer-playback="mse" would simply use ManagedMediaSource where available that would definitely work!

Just to keep you in the loop: Step 1 of getting support for this just occurred and should be released soon (upgrading to the latest version of hls.js). I'll keep you posted on our progress for step 2 (updating our codebase to take advantage of this).