From f967d8be4dd7bc806d9b9c2d848cdadbe6752c16 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 7 Mar 2023 11:47:42 +0100 Subject: Fix live buffering with small latency --- .../player/shared/manager-options/hls-options-builder.ts | 3 +-- .../assets/player/shared/p2p-media-loader/segment-validator.ts | 10 +++------- 2 files changed, 4 insertions(+), 9 deletions(-) (limited to 'client/src/assets/player/shared') diff --git a/client/src/assets/player/shared/manager-options/hls-options-builder.ts b/client/src/assets/player/shared/manager-options/hls-options-builder.ts index 63e9fa8c8..194991fa4 100644 --- a/client/src/assets/player/shared/manager-options/hls-options-builder.ts +++ b/client/src/assets/player/shared/manager-options/hls-options-builder.ts @@ -96,7 +96,6 @@ export class HLSOptionsBuilder { segmentValidator: segmentValidatorFactory({ segmentsSha256Url: this.options.p2pMediaLoader.segmentsSha256Url, - isLive: this.options.common.isLive, authorizationHeader: this.options.common.authorizationHeader, requiresAuth: this.options.common.requiresAuth, serverUrl: this.options.common.serverUrl @@ -129,7 +128,7 @@ export class HLSOptionsBuilder { ...base, useP2P: false, - httpDownloadProbability: 1 + requiredSegmentsPriority: 10 } case LiveVideoLatencyMode.HIGH_LATENCY: diff --git a/client/src/assets/player/shared/p2p-media-loader/segment-validator.ts b/client/src/assets/player/shared/p2p-media-loader/segment-validator.ts index 3c76d63f7..6e9bcf103 100644 --- a/client/src/assets/player/shared/p2p-media-loader/segment-validator.ts +++ b/client/src/assets/player/shared/p2p-media-loader/segment-validator.ts @@ -7,24 +7,20 @@ import { isSameOrigin } from '../common' type SegmentsJSON = { [filename: string]: string | { [byterange: string]: string } } -const maxRetries = 3 +const maxRetries = 10 function segmentValidatorFactory (options: { serverUrl: string segmentsSha256Url: string - isLive: boolean authorizationHeader: () => string requiresAuth: boolean }) { - const { serverUrl, segmentsSha256Url, isLive, authorizationHeader, requiresAuth } = options + const { serverUrl, segmentsSha256Url, authorizationHeader, requiresAuth } = options let segmentsJSON = fetchSha256Segments({ serverUrl, segmentsSha256Url, authorizationHeader, requiresAuth }) const regex = /bytes=(\d+)-(\d+)/ return async function segmentValidator (segment: Segment, _method: string, _peerId: string, retry = 1) { - // Wait for hash generation from the server - if (isLive) await wait(1000) - const filename = basename(removeQueryParams(segment.url)) const segmentValue = (await segmentsJSON)[filename] @@ -36,7 +32,7 @@ function segmentValidatorFactory (options: { if (!segmentValue) { logger.info(`Refetching sha segments for ${filename}`) - await wait(1000) + await wait(500) segmentsJSON = fetchSha256Segments({ serverUrl, segmentsSha256Url, authorizationHeader, requiresAuth }) await segmentValidator(segment, _method, _peerId, retry + 1) -- cgit v1.2.3