diff options
Diffstat (limited to 'client/src/assets/player/shared/p2p-media-loader/p2p-media-loader-plugin.ts')
-rw-r--r-- | client/src/assets/player/shared/p2p-media-loader/p2p-media-loader-plugin.ts | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/client/src/assets/player/shared/p2p-media-loader/p2p-media-loader-plugin.ts b/client/src/assets/player/shared/p2p-media-loader/p2p-media-loader-plugin.ts index 56068e340..b608ee3e2 100644 --- a/client/src/assets/player/shared/p2p-media-loader/p2p-media-loader-plugin.ts +++ b/client/src/assets/player/shared/p2p-media-loader/p2p-media-loader-plugin.ts | |||
@@ -44,13 +44,31 @@ class P2pMediaLoaderPlugin extends Plugin { | |||
44 | if (!(videojs as any).Html5Hlsjs) { | 44 | if (!(videojs as any).Html5Hlsjs) { |
45 | logger.warn('HLS.js does not seem to be supported. Try to fallback to built in HLS.') | 45 | logger.warn('HLS.js does not seem to be supported. Try to fallback to built in HLS.') |
46 | 46 | ||
47 | let message: string | ||
47 | if (!player.canPlayType('application/vnd.apple.mpegurl')) { | 48 | if (!player.canPlayType('application/vnd.apple.mpegurl')) { |
48 | const message = 'Cannot fallback to built-in HLS' | 49 | message = 'Cannot fallback to built-in HLS' |
50 | } else if (options.requiresAuth) { | ||
51 | message = 'Video requires auth which is not compatible to build-in HLS player' | ||
52 | } | ||
53 | |||
54 | if (message) { | ||
49 | logger.warn(message) | 55 | logger.warn(message) |
50 | 56 | ||
51 | player.ready(() => player.trigger('error', new Error(message))) | 57 | const error: MediaError = { |
58 | code: MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED, | ||
59 | message, | ||
60 | MEDIA_ERR_ABORTED: MediaError.MEDIA_ERR_ABORTED, | ||
61 | MEDIA_ERR_DECODE: MediaError.MEDIA_ERR_DECODE, | ||
62 | MEDIA_ERR_NETWORK: MediaError.MEDIA_ERR_NETWORK, | ||
63 | MEDIA_ERR_SRC_NOT_SUPPORTED: MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED | ||
64 | } | ||
65 | |||
66 | player.ready(() => player.error(error)) | ||
52 | return | 67 | return |
53 | } | 68 | } |
69 | |||
70 | // Workaround to force video.js to not re create a video element | ||
71 | (this.player as any).playerElIngest_ = this.player.el().parentNode | ||
54 | } else { | 72 | } else { |
55 | // FIXME: typings https://github.com/Microsoft/TypeScript/issues/14080 | 73 | // FIXME: typings https://github.com/Microsoft/TypeScript/issues/14080 |
56 | (videojs as any).Html5Hlsjs.addHook('beforeinitialize', (videojsPlayer: any, hlsjs: any) => { | 74 | (videojs as any).Html5Hlsjs.addHook('beforeinitialize', (videojsPlayer: any, hlsjs: any) => { |
@@ -115,6 +133,8 @@ class P2pMediaLoaderPlugin extends Plugin { | |||
115 | this.p2pEngine = this.options.loader.getEngine() | 133 | this.p2pEngine = this.options.loader.getEngine() |
116 | 134 | ||
117 | this.p2pEngine.on(Events.SegmentError, (segment: Segment, err) => { | 135 | this.p2pEngine.on(Events.SegmentError, (segment: Segment, err) => { |
136 | if (navigator.onLine === false) return | ||
137 | |||
118 | logger.error(`Segment ${segment.id} error.`, err) | 138 | logger.error(`Segment ${segment.id} error.`, err) |
119 | 139 | ||
120 | this.options.redundancyUrlManager.removeBySegmentUrl(segment.requestUrl) | 140 | this.options.redundancyUrlManager.removeBySegmentUrl(segment.requestUrl) |