Web player: live TV stutters or fails in desktop Chrome 142+ because Chrome's built-in HLS player is used instead of hls.js

Setup: DVR v2026.10.24.0621 (Docker, Linux, VAAPI transcode), HDHomeRun FLEX DUO. Client is Google Chrome 154 on Linux (AMD iGPU), wired.

Symptom: Live TV in the web player plays for a bit, stutters, and sometimes stops with "The media could not be loaded, either because the server or network failed or because the format is not supported." The server side looks healthy: segments are produced in real time, the transcoder has no errors, and the signal is 100%.

Cause: The web player decides whether to use hls.js like this (in bundle.js):

nativeHlsSupported = video.canPlayType('application/x-mpegURL; codecs="avc1.42E01E"') && !Edge && !Android
...
player.src({src: playlistUrl, type: "application/x-mpegURL", skipContribHlsJs: nativeHlsSupported})

Since Chrome 142, desktop Chrome has a built-in HLS player and canPlayType('application/x-mpegURL') returns "maybe". So the web player now skips hls.js and hands the .m3u8 straight to the <video> element. Chrome's built-in player handles these live streams poorly.

A/B test (same live channel, same tab, same machine):

Player Test length Stalls Dropped frames
Chrome native HLS (current behavior) ~60 s 11 79 of 1745
hls.js via MSE 30 s 0 after startup 0 of 904

Workaround: a tiny unpacked extension that hides native HLS from the DVR page only. It's a content script with "world": "MAIN" and "run_at": "document_start", matching http://<dvr>:8089/*:

const orig = HTMLMediaElement.prototype.canPlayType;
HTMLMediaElement.prototype.canPlayType = function (t) {
  return /^\s*application\/(x-|vnd\.apple\.)mpegurl/i.test(String(t)) ? "" : orig.call(this, t);
};

With it loaded, video.src is a blob: URL (hls.js) and playback is smooth.

Suggested fix: only prefer native HLS on Safari/iOS, or check Hls.isSupported() first and use native HLS only as a fallback. Mux saw elevated playback errors when Chrome rolled out native HLS and recommended that players prefer MSE: mux Status - Investigating elevated playback errors on Chrome version 141.0.7390.123 and later

You don't say if you are using the new beta web admin user interface version 2. It should work better.