aboutsummaryrefslogtreecommitdiffhomepage
path: root/client/src/assets/player/shared/p2p-media-loader/p2p-media-loader-plugin.ts
diff options
context:
space:
mode:
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.ts24
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)