diff options
author | Chocobozzz <me@florianbigard.com> | 2022-07-15 15:30:14 +0200 |
---|---|---|
committer | Chocobozzz <me@florianbigard.com> | 2022-07-18 11:37:18 +0200 |
commit | 42b40636991b97fe818007fab19091764fc5db73 (patch) | |
tree | db431787c06ce898d22e91ff771f795219274fc6 /client/src/assets/player/shared/p2p-media-loader/hls-plugin.ts | |
parent | 654d4ede7fa4d0faa71e49bcfab6b65a686397b2 (diff) | |
download | PeerTube-42b40636991b97fe818007fab19091764fc5db73.tar.gz PeerTube-42b40636991b97fe818007fab19091764fc5db73.tar.zst PeerTube-42b40636991b97fe818007fab19091764fc5db73.zip |
Add ability for client to create server logs
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.ts | 25 |
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 | ||
4 | import Hlsjs, { ErrorData, HlsConfig, Level, LevelSwitchingData, ManifestParsedData } from 'hls.js' | 4 | import Hlsjs, { ErrorData, HlsConfig, Level, LevelSwitchingData, ManifestParsedData } from 'hls.js' |
5 | import videojs from 'video.js' | 5 | import videojs from 'video.js' |
6 | import { logger } from '@root-helpers/logger' | ||
6 | import { HlsjsConfigHandlerOptions, PeerTubeResolution, VideoJSTechHLS } from '../../types' | 7 | import { HlsjsConfigHandlerOptions, PeerTubeResolution, VideoJSTechHLS } from '../../types' |
7 | 8 | ||
8 | type ErrorCounts = { | 9 | type ErrorCounts = { |
@@ -17,14 +18,14 @@ type HookFn = (player: videojs.Player, hljs: Hlsjs) => void | |||
17 | 18 | ||
18 | const registerSourceHandler = function (vjs: typeof videojs) { | 19 | const 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 | } |