Merge branch 'release/5.1.0' into develop

This commit is contained in:
Chocobozzz 2023-03-07 11:59:47 +01:00
commit 0e3026f315
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
4 changed files with 11 additions and 12 deletions

View File

@ -45,9 +45,11 @@
<my-help helpType="markdownText"> <my-help helpType="markdownText">
<ng-template ptTemplate="preHtml"> <ng-template ptTemplate="preHtml">
<ng-container i18n> <ng-container i18n>Video descriptions are truncated by default and require manual action to expand them.</ng-container>
Video descriptions are truncated by default and require manual action to expand them.
</ng-container> <br />
<ng-container i18n>A timestamp (<i>00:05</i> for example) is automatically converted into a link to a part of the video.</ng-container>
</ng-template> </ng-template>
</my-help> </my-help>

View File

@ -96,7 +96,6 @@ export class HLSOptionsBuilder {
segmentValidator: segmentValidatorFactory({ segmentValidator: segmentValidatorFactory({
segmentsSha256Url: this.options.p2pMediaLoader.segmentsSha256Url, segmentsSha256Url: this.options.p2pMediaLoader.segmentsSha256Url,
isLive: this.options.common.isLive,
authorizationHeader: this.options.common.authorizationHeader, authorizationHeader: this.options.common.authorizationHeader,
requiresAuth: this.options.common.requiresAuth, requiresAuth: this.options.common.requiresAuth,
serverUrl: this.options.common.serverUrl serverUrl: this.options.common.serverUrl
@ -129,7 +128,7 @@ export class HLSOptionsBuilder {
...base, ...base,
useP2P: false, useP2P: false,
httpDownloadProbability: 1 requiredSegmentsPriority: 10
} }
case LiveVideoLatencyMode.HIGH_LATENCY: case LiveVideoLatencyMode.HIGH_LATENCY:

View File

@ -7,24 +7,20 @@ import { isSameOrigin } from '../common'
type SegmentsJSON = { [filename: string]: string | { [byterange: string]: string } } type SegmentsJSON = { [filename: string]: string | { [byterange: string]: string } }
const maxRetries = 3 const maxRetries = 10
function segmentValidatorFactory (options: { function segmentValidatorFactory (options: {
serverUrl: string serverUrl: string
segmentsSha256Url: string segmentsSha256Url: string
isLive: boolean
authorizationHeader: () => string authorizationHeader: () => string
requiresAuth: boolean requiresAuth: boolean
}) { }) {
const { serverUrl, segmentsSha256Url, isLive, authorizationHeader, requiresAuth } = options const { serverUrl, segmentsSha256Url, authorizationHeader, requiresAuth } = options
let segmentsJSON = fetchSha256Segments({ serverUrl, segmentsSha256Url, authorizationHeader, requiresAuth }) let segmentsJSON = fetchSha256Segments({ serverUrl, segmentsSha256Url, authorizationHeader, requiresAuth })
const regex = /bytes=(\d+)-(\d+)/ const regex = /bytes=(\d+)-(\d+)/
return async function segmentValidator (segment: Segment, _method: string, _peerId: string, retry = 1) { 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 filename = basename(removeQueryParams(segment.url))
const segmentValue = (await segmentsJSON)[filename] const segmentValue = (await segmentsJSON)[filename]
@ -36,7 +32,7 @@ function segmentValidatorFactory (options: {
if (!segmentValue) { if (!segmentValue) {
logger.info(`Refetching sha segments for ${filename}`) logger.info(`Refetching sha segments for ${filename}`)
await wait(1000) await wait(500)
segmentsJSON = fetchSha256Segments({ serverUrl, segmentsSha256Url, authorizationHeader, requiresAuth }) segmentsJSON = fetchSha256Segments({ serverUrl, segmentsSha256Url, authorizationHeader, requiresAuth })
await segmentValidator(segment, _method, _peerId, retry + 1) await segmentValidator(segment, _method, _peerId, retry + 1)

View File

@ -72,6 +72,8 @@ async function run () {
for (const id of ids) { for (const id of ids) {
const videoFull = await VideoModel.loadFull(id) const videoFull = await VideoModel.loadFull(id)
if (videoFull.isLive) continue
const files = videoFull.VideoFiles || [] const files = videoFull.VideoFiles || []
const hls = videoFull.getHLSPlaylist() const hls = videoFull.getHLSPlaylist()