aboutsummaryrefslogtreecommitdiffhomepage
path: root/client/src/assets/player/shared/p2p-media-loader/hls-plugin.ts
diff options
context:
space:
mode:
Diffstat (limited to 'client/src/assets/player/shared/p2p-media-loader/hls-plugin.ts')
-rw-r--r--client/src/assets/player/shared/p2p-media-loader/hls-plugin.ts25
1 files changed, 13 insertions, 12 deletions
diff --git a/client/src/assets/player/shared/p2p-media-loader/hls-plugin.ts b/client/src/assets/player/shared/p2p-media-loader/hls-plugin.ts
index d0105fa36..e49e5c694 100644
--- a/client/src/assets/player/shared/p2p-media-loader/hls-plugin.ts
+++ b/client/src/assets/player/shared/p2p-media-loader/hls-plugin.ts
@@ -3,6 +3,7 @@
3 3
4import Hlsjs, { ErrorData, HlsConfig, Level, LevelSwitchingData, ManifestParsedData } from 'hls.js' 4import Hlsjs, { ErrorData, HlsConfig, Level, LevelSwitchingData, ManifestParsedData } from 'hls.js'
5import videojs from 'video.js' 5import videojs from 'video.js'
6import { logger } from '@root-helpers/logger'
6import { HlsjsConfigHandlerOptions, PeerTubeResolution, VideoJSTechHLS } from '../../types' 7import { HlsjsConfigHandlerOptions, PeerTubeResolution, VideoJSTechHLS } from '../../types'
7 8
8type ErrorCounts = { 9type ErrorCounts = {
@@ -17,14 +18,14 @@ type HookFn = (player: videojs.Player, hljs: Hlsjs) => void
17 18
18const registerSourceHandler = function (vjs: typeof videojs) { 19const registerSourceHandler = function (vjs: typeof videojs) {
19 if (!Hlsjs.isSupported()) { 20 if (!Hlsjs.isSupported()) {
20 console.warn('Hls.js is not supported in this browser!') 21 logger.warn('Hls.js is not supported in this browser!')
21 return 22 return
22 } 23 }
23 24
24 const html5 = vjs.getTech('Html5') 25 const html5 = vjs.getTech('Html5')
25 26
26 if (!html5) { 27 if (!html5) {
27 console.error('No Hml5 tech found in videojs') 28 logger.error('No Hml5 tech found in videojs')
28 return 29 return
29 } 30 }
30 31
@@ -120,7 +121,7 @@ class Html5Hlsjs {
120 121
121 if (!mediaError) return 122 if (!mediaError) return
122 123
123 console.log(mediaError) 124 logger.info(mediaError)
124 switch (mediaError.code) { 125 switch (mediaError.code) {
125 case mediaError.MEDIA_ERR_ABORTED: 126 case mediaError.MEDIA_ERR_ABORTED:
126 errorTxt = 'You aborted the video playback' 127 errorTxt = 'You aborted the video playback'
@@ -141,7 +142,7 @@ class Html5Hlsjs {
141 errorTxt = mediaError.message 142 errorTxt = mediaError.message
142 } 143 }
143 144
144 console.error('MEDIA_ERROR: ', errorTxt) 145 logger.error(`MEDIA_ERROR: ${errorTxt}`)
145 }) 146 })
146 147
147 this.initialize() 148 this.initialize()
@@ -212,20 +213,20 @@ class Html5Hlsjs {
212 213
213 private _handleMediaError (error: any) { 214 private _handleMediaError (error: any) {
214 if (this.errorCounts[Hlsjs.ErrorTypes.MEDIA_ERROR] === 1) { 215 if (this.errorCounts[Hlsjs.ErrorTypes.MEDIA_ERROR] === 1) {
215 console.info('trying to recover media error') 216 logger.info('trying to recover media error')
216 this.hls.recoverMediaError() 217 this.hls.recoverMediaError()
217 return 218 return
218 } 219 }
219 220
220 if (this.errorCounts[Hlsjs.ErrorTypes.MEDIA_ERROR] === 2) { 221 if (this.errorCounts[Hlsjs.ErrorTypes.MEDIA_ERROR] === 2) {
221 console.info('2nd try to recover media error (by swapping audio codec') 222 logger.info('2nd try to recover media error (by swapping audio codec')
222 this.hls.swapAudioCodec() 223 this.hls.swapAudioCodec()
223 this.hls.recoverMediaError() 224 this.hls.recoverMediaError()
224 return 225 return
225 } 226 }
226 227
227 if (this.errorCounts[Hlsjs.ErrorTypes.MEDIA_ERROR] > 2) { 228 if (this.errorCounts[Hlsjs.ErrorTypes.MEDIA_ERROR] > 2) {
228 console.info('bubbling media error up to VIDEOJS') 229 logger.info('bubbling media error up to VIDEOJS')
229 this.hls.destroy() 230 this.hls.destroy()
230 this.tech.error = () => error 231 this.tech.error = () => error
231 this.tech.trigger('error') 232 this.tech.trigger('error')
@@ -234,7 +235,7 @@ class Html5Hlsjs {
234 235
235 private _handleNetworkError (error: any) { 236 private _handleNetworkError (error: any) {
236 if (this.errorCounts[Hlsjs.ErrorTypes.NETWORK_ERROR] <= this.maxNetworkErrorRecovery) { 237 if (this.errorCounts[Hlsjs.ErrorTypes.NETWORK_ERROR] <= this.maxNetworkErrorRecovery) {
237 console.info('trying to recover network error') 238 logger.info('trying to recover network error')
238 239
239 // Wait 1 second and retry 240 // Wait 1 second and retry
240 setTimeout(() => this.hls.startLoad(), 1000) 241 setTimeout(() => this.hls.startLoad(), 1000)
@@ -247,7 +248,7 @@ class Html5Hlsjs {
247 return 248 return
248 } 249 }
249 250
250 console.info('bubbling network error up to VIDEOJS') 251 logger.info('bubbling network error up to VIDEOJS')
251 this.hls.destroy() 252 this.hls.destroy()
252 this.tech.error = () => error 253 this.tech.error = () => error
253 this.tech.trigger('error') 254 this.tech.trigger('error')
@@ -262,8 +263,8 @@ class Html5Hlsjs {
262 if (this.errorCounts[data.type]) this.errorCounts[data.type] += 1 263 if (this.errorCounts[data.type]) this.errorCounts[data.type] += 1
263 else this.errorCounts[data.type] = 1 264 else this.errorCounts[data.type] = 1
264 265
265 if (data.fatal) console.warn(error.message) 266 if (data.fatal) logger.warn(error.message)
266 else console.error(error.message, data) 267 else logger.error(error.message, { data })
267 268
268 if (data.type === Hlsjs.ErrorTypes.NETWORK_ERROR) { 269 if (data.type === Hlsjs.ErrorTypes.NETWORK_ERROR) {
269 error.code = 2 270 error.code = 2
@@ -273,7 +274,7 @@ class Html5Hlsjs {
273 this._handleMediaError(error) 274 this._handleMediaError(error)
274 } else if (data.fatal) { 275 } else if (data.fatal) {
275 this.hls.destroy() 276 this.hls.destroy()
276 console.info('bubbling error up to VIDEOJS') 277 logger.info('bubbling error up to VIDEOJS')
277 this.tech.error = () => error as any 278 this.tech.error = () => error as any
278 this.tech.trigger('error') 279 this.tech.trigger('error')
279 } 280 }