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
...base,
useP2P: false,
- httpDownloadProbability: 1
+ requiredSegmentsPriority: 10
}
case LiveVideoLatencyMode.HIGH_LATENCY:
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]
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)