From 0daa00fc7f074c1c86968ed0fcd84bc30254ee6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Velad=20Galv=C3=A1n?= Date: Fri, 18 Feb 2022 04:52:36 +0100 Subject: [PATCH] feat!(hls): HLS disabled in old browsers/platforms due to incompatibilities (#3964) In Tizen 2/3 and WebOS 3.x there is no support for SourceBuffer.mode=sequence so as a result of change #2337, it necessary disable support for the HLS parser so that the user can at least use the native one with src= . --- README.md | 2 ++ lib/hls/hls_parser.js | 17 ++++++++++------- lib/util/platform.js | 12 ++++++++++++ 3 files changed, 24 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 5efacbc652..35f83781db 100644 --- a/README.md +++ b/README.md @@ -112,6 +112,8 @@ DASH features **not** supported: ## HLS features +**Only supported on browsers with SourceBuffer.mode=sequence support** + HLS features supported: - VOD, Live, and Event types - Low-latency streaming with partial segments, preload hints, and delta updates diff --git a/lib/hls/hls_parser.js b/lib/hls/hls_parser.js index 3fb4c49914..3b78cebbe6 100644 --- a/lib/hls/hls_parser.js +++ b/lib/hls/hls_parser.js @@ -2497,10 +2497,13 @@ shaka.hls.HlsParser.PresentationType_ = { LIVE: 'LIVE', }; - -shaka.media.ManifestParser.registerParserByExtension( - 'm3u8', () => new shaka.hls.HlsParser()); -shaka.media.ManifestParser.registerParserByMime( - 'application/x-mpegurl', () => new shaka.hls.HlsParser()); -shaka.media.ManifestParser.registerParserByMime( - 'application/vnd.apple.mpegurl', () => new shaka.hls.HlsParser()); +if (!shaka.util.Platform.isTizen3() && + !shaka.util.Platform.isTizen2() && + !shaka.util.Platform.isWebOS3()) { + shaka.media.ManifestParser.registerParserByExtension( + 'm3u8', () => new shaka.hls.HlsParser()); + shaka.media.ManifestParser.registerParserByMime( + 'application/x-mpegurl', () => new shaka.hls.HlsParser()); + shaka.media.ManifestParser.registerParserByMime( + 'application/vnd.apple.mpegurl', () => new shaka.hls.HlsParser()); +} diff --git a/lib/util/platform.js b/lib/util/platform.js index 49dce396cf..cd91fdd571 100644 --- a/lib/util/platform.js +++ b/lib/util/platform.js @@ -142,6 +142,18 @@ shaka.util.Platform = class { return shaka.util.Platform.userAgentContains_('Web0S'); } + /** + * Check if the current platform is a WebOS 3. + * + * @return {boolean} + */ + static isWebOS3() { + // See: http://webostv.developer.lge.com/discover/specifications/web-engine/ + return shaka.util.Platform.userAgentContains_('Web0S') && + shaka.util.Platform.userAgentContains_( + 'Chrome/38.0.2125.122 Safari/537.36'); + } + /** * Check if the current platform is a Google Chromecast. *