diff --git a/internal/servers/hls/index.html b/internal/servers/hls/index.html index 20ce92dd55b..b54b95b291f 100644 --- a/internal/servers/hls/index.html +++ b/internal/servers/hls/index.html @@ -63,11 +63,18 @@ message.innerText = str; }; +const isIOS = () => ( + /iPad|iPhone|iPod/.test(navigator.platform) + || (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1) +); + const loadStream = () => { - // always prefer hls.js over native HLS. - // this is because some Android versions support native HLS + // Prefer hls.js over native HLS. + // This is because some Android versions support native HLS // but don't support fMP4s. - if (Hls.isSupported()) { + // Skip iPad iOS >= 13 and iPhone iOS >= 17, + // which support hls.js but don't support well maxLiveSyncPlaybackRate. + if (Hls.isSupported() && !isIOS()) { const hls = new Hls({ maxLiveSyncPlaybackRate: 1.5, });