diff options
author | Chocobozzz <me@florianbigard.com> | 2022-01-19 10:44:12 +0100 |
---|---|---|
committer | Chocobozzz <me@florianbigard.com> | 2022-01-19 10:44:12 +0100 |
commit | 077a413ff826c3bf2db01bb4b0cda04af47aeef7 (patch) | |
tree | d4e40d4d7a238878e9bfc00e48aef7d15186b692 | |
parent | e8bffe9690307f2686ed5573cae2b86ee5f57789 (diff) | |
download | PeerTube-077a413ff826c3bf2db01bb4b0cda04af47aeef7.tar.gz PeerTube-077a413ff826c3bf2db01bb4b0cda04af47aeef7.tar.zst PeerTube-077a413ff826c3bf2db01bb4b0cda04af47aeef7.zip |
Automatically restart live on server/live restart
-rw-r--r-- | client/src/app/+videos/+video-watch/video-watch.component.ts | 3 | ||||
-rw-r--r-- | client/src/assets/player/p2p-media-loader/hls-plugin.ts | 7 |
2 files changed, 6 insertions, 4 deletions
diff --git a/client/src/app/+videos/+video-watch/video-watch.component.ts b/client/src/app/+videos/+video-watch/video-watch.component.ts index 5fd095c36..1ee18f52f 100644 --- a/client/src/app/+videos/+video-watch/video-watch.component.ts +++ b/client/src/app/+videos/+video-watch/video-watch.component.ts | |||
@@ -688,9 +688,6 @@ export class VideoWatchComponent implements OnInit, OnDestroy { | |||
688 | private handleLiveStateChange (newState: VideoState) { | 688 | private handleLiveStateChange (newState: VideoState) { |
689 | if (newState !== VideoState.PUBLISHED) return | 689 | if (newState !== VideoState.PUBLISHED) return |
690 | 690 | ||
691 | const videoState = this.video.state.id | ||
692 | if (videoState !== VideoState.WAITING_FOR_LIVE && videoState !== VideoState.LIVE_ENDED) return | ||
693 | |||
694 | console.log('Loading video after live update.') | 691 | console.log('Loading video after live update.') |
695 | 692 | ||
696 | const videoUUID = this.video.uuid | 693 | const videoUUID = this.video.uuid |
diff --git a/client/src/assets/player/p2p-media-loader/hls-plugin.ts b/client/src/assets/player/p2p-media-loader/hls-plugin.ts index 421ce4934..640858025 100644 --- a/client/src/assets/player/p2p-media-loader/hls-plugin.ts +++ b/client/src/assets/player/p2p-media-loader/hls-plugin.ts | |||
@@ -89,6 +89,8 @@ class Html5Hlsjs { | |||
89 | private readonly source: videojs.Tech.SourceObject | 89 | private readonly source: videojs.Tech.SourceObject |
90 | private readonly vjs: typeof videojs | 90 | private readonly vjs: typeof videojs |
91 | 91 | ||
92 | private maxNetworkErrorRecovery = 5 | ||
93 | |||
92 | private hls: Hlsjs | 94 | private hls: Hlsjs |
93 | private hlsjsConfig: Partial<HlsConfig & { cueHandler: any }> = null | 95 | private hlsjsConfig: Partial<HlsConfig & { cueHandler: any }> = null |
94 | 96 | ||
@@ -225,7 +227,7 @@ class Html5Hlsjs { | |||
225 | } | 227 | } |
226 | 228 | ||
227 | private _handleNetworkError (error: any) { | 229 | private _handleNetworkError (error: any) { |
228 | if (this.errorCounts[Hlsjs.ErrorTypes.NETWORK_ERROR] <= 5) { | 230 | if (this.errorCounts[Hlsjs.ErrorTypes.NETWORK_ERROR] <= this.maxNetworkErrorRecovery) { |
229 | console.info('trying to recover network error') | 231 | console.info('trying to recover network error') |
230 | 232 | ||
231 | // Wait 1 second and retry | 233 | // Wait 1 second and retry |
@@ -371,6 +373,9 @@ class Html5Hlsjs { | |||
371 | this.dvrDuration = data.details.totalduration | 373 | this.dvrDuration = data.details.totalduration |
372 | 374 | ||
373 | this._duration = this.isLive ? Infinity : data.details.totalduration | 375 | this._duration = this.isLive ? Infinity : data.details.totalduration |
376 | |||
377 | // Increase network error recovery for lives since they can be broken (server restart, stream interruption etc) | ||
378 | if (this.isLive) this.maxNetworkErrorRecovery = 300 | ||
374 | }) | 379 | }) |
375 | 380 | ||
376 | this.hls.once(Hlsjs.Events.FRAG_LOADED, () => { | 381 | this.hls.once(Hlsjs.Events.FRAG_LOADED, () => { |