Repository navigation
Safari: media playback does not start when using overrideNative + experimentalUseMMS #1600
Description
Hello there!
Description
I encountered a similar issue to this one however I have not faced the MEDIA_ERR_SRC_NOT_SUPPORTED error
I noticed that when using Safari with the flags overrideNative and experimentalUseMMS set to true, video playback does not start.
html5: {
vhs: {
overrideNative: true,
experimentalUseMMS: true
}
I traced the issue back to the following commit:
c1d3186
Prior to this change everything works as expected.
Test case
This sample reproduces the issue when tested in Safari.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Example: overrideNative error on Safari</title>
<!-- Local Video.js assets -->
<!-- <link href="../video.js/dist/video-js.css" rel="stylesheet" type="text/css" />
<script src="../video.js/dist/video.js"></script> -->
<script src="https://vjs.zencdn.net/8.23.4/video.js"></script>
<link href="https://vjs.zencdn.net/8.23.4/video-js.css" rel="stylesheet" type="text/css" />
</head>
<body>
<h1>Example: overrideNative error on Safari</h1>
<video
id="player"
class="video-js vjs-default-skin vjs-big-play-centered"
controls
preload="auto"
autoplay
muted
width="640"
height="360"
data-setup="{}"
>
<p class="vjs-no-js">
To view this video please enable JavaScript, and consider upgrading to a
web browser that
<a href="https://videojs.com/html5-video-support/" target="_blank"
>supports HTML5 video</a
>.
</p>
</video>
<script>
const player = videojs('player', {
html5: {
vhs: {
overrideNative: true,
experimentalUseMMS: true
},
}
});
player.src({
src: 'https://stream.mux.com/v69RSHhFelSm4701snP22dYz2jICy4E4FUyk02rW4gxRM.m3u8',
type: 'application/x-mpegURL'
});
player.ready(function () {
console.log('Video.js player ready');
});
</script>
</body>
</html>Possible fix
After reviewing the code further, I noticed that playback breaks when the following line was introduced:
this.segmentMetadataTrack_.mode = 'hidden';Which was introduced in the mentioned commit
Changing the file playlist-controller.js with this
// Only disable segment metadata track in Safari/iOS when using overrideNative HLS
// (same scenario where we add both blob and manifest source elements for AirPlay)
if ((videojs.browser.IS_ANY_SAFARI || videojs.browser.IS_IOS) &&
options.overrideNative &&
options.experimentalUseMMS &&
this.sourceType_ === 'hls') {
this.segmentMetadataTrack_.mode = 'disabled';
} else {
this.segmentMetadataTrack_.mode = 'hidden';
}This change appears to fix the issue.
I will open a PR with the proposed fix so it can be reviewed.
What version of Video.js are you using?
8.23.4
Video.js plugins used
No response
What browser(s) including version(s) does this occur with?
Safari 26.3
What OS(es) and version(s) does this occur with?
MacOS Tahoe 26.3
Activity
fix: Safari playback stall with overrideNative and experimentalUseMMS
welcome commentedon Mar 12, 2026
👋 Thanks for opening your first issue here! 👋
If you're reporting a 🐞 bug, please make sure you include steps to reproduce it. We get a lot of issues on this repo, so please be patient and we will get back to you as soon as we can.
To help make it easier for us to investigate your issue, please follow the contributing guidelines.
fix: Safari playback stall with overrideNative and experimentalUseMMS
hannseman commentedon Mar 17, 2026
Seeing this issue as well even when
experimentalUseMMS: false.