aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--client/src/app/+videos/+video-edit/shared/video-edit.component.html8
-rw-r--r--client/src/assets/player/shared/manager-options/hls-options-builder.ts3
-rw-r--r--client/src/assets/player/shared/p2p-media-loader/segment-validator.ts10
-rw-r--r--scripts/create-move-video-storage-job.ts2
4 files changed, 11 insertions, 12 deletions
diff --git a/client/src/app/+videos/+video-edit/shared/video-edit.component.html b/client/src/app/+videos/+video-edit/shared/video-edit.component.html
index fa816fd9e..fdd6b2311 100644
--- a/client/src/app/+videos/+video-edit/shared/video-edit.component.html
+++ b/client/src/app/+videos/+video-edit/shared/video-edit.component.html
@@ -45,9 +45,11 @@
45 45
46 <my-help helpType="markdownText"> 46 <my-help helpType="markdownText">
47 <ng-template ptTemplate="preHtml"> 47 <ng-template ptTemplate="preHtml">
48 <ng-container i18n> 48 <ng-container i18n>Video descriptions are truncated by default and require manual action to expand them.</ng-container>
49 Video descriptions are truncated by default and require manual action to expand them. 49
50 </ng-container> 50 <br />
51
52 <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>
51 </ng-template> 53 </ng-template>
52 </my-help> 54 </my-help>
53 55
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 {
96 96
97 segmentValidator: segmentValidatorFactory({ 97 segmentValidator: segmentValidatorFactory({
98 segmentsSha256Url: this.options.p2pMediaLoader.segmentsSha256Url, 98 segmentsSha256Url: this.options.p2pMediaLoader.segmentsSha256Url,
99 isLive: this.options.common.isLive,
100 authorizationHeader: this.options.common.authorizationHeader, 99 authorizationHeader: this.options.common.authorizationHeader,
101 requiresAuth: this.options.common.requiresAuth, 100 requiresAuth: this.options.common.requiresAuth,
102 serverUrl: this.options.common.serverUrl 101 serverUrl: this.options.common.serverUrl
@@ -129,7 +128,7 @@ export class HLSOptionsBuilder {
129 ...base, 128 ...base,
130 129
131 useP2P: false, 130 useP2P: false,
132 httpDownloadProbability: 1 131 requiredSegmentsPriority: 10
133 } 132 }
134 133
135 case LiveVideoLatencyMode.HIGH_LATENCY: 134 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'
7 7
8type SegmentsJSON = { [filename: string]: string | { [byterange: string]: string } } 8type SegmentsJSON = { [filename: string]: string | { [byterange: string]: string } }
9 9
10const maxRetries = 3 10const maxRetries = 10
11 11
12function segmentValidatorFactory (options: { 12function segmentValidatorFactory (options: {
13 serverUrl: string 13 serverUrl: string
14 segmentsSha256Url: string 14 segmentsSha256Url: string
15 isLive: boolean
16 authorizationHeader: () => string 15 authorizationHeader: () => string
17 requiresAuth: boolean 16 requiresAuth: boolean
18}) { 17}) {
19 const { serverUrl, segmentsSha256Url, isLive, authorizationHeader, requiresAuth } = options 18 const { serverUrl, segmentsSha256Url, authorizationHeader, requiresAuth } = options
20 19
21 let segmentsJSON = fetchSha256Segments({ serverUrl, segmentsSha256Url, authorizationHeader, requiresAuth }) 20 let segmentsJSON = fetchSha256Segments({ serverUrl, segmentsSha256Url, authorizationHeader, requiresAuth })
22 const regex = /bytes=(\d+)-(\d+)/ 21 const regex = /bytes=(\d+)-(\d+)/
23 22
24 return async function segmentValidator (segment: Segment, _method: string, _peerId: string, retry = 1) { 23 return async function segmentValidator (segment: Segment, _method: string, _peerId: string, retry = 1) {
25 // Wait for hash generation from the server
26 if (isLive) await wait(1000)
27
28 const filename = basename(removeQueryParams(segment.url)) 24 const filename = basename(removeQueryParams(segment.url))
29 25
30 const segmentValue = (await segmentsJSON)[filename] 26 const segmentValue = (await segmentsJSON)[filename]
@@ -36,7 +32,7 @@ function segmentValidatorFactory (options: {
36 if (!segmentValue) { 32 if (!segmentValue) {
37 logger.info(`Refetching sha segments for ${filename}`) 33 logger.info(`Refetching sha segments for ${filename}`)
38 34
39 await wait(1000) 35 await wait(500)
40 36
41 segmentsJSON = fetchSha256Segments({ serverUrl, segmentsSha256Url, authorizationHeader, requiresAuth }) 37 segmentsJSON = fetchSha256Segments({ serverUrl, segmentsSha256Url, authorizationHeader, requiresAuth })
42 await segmentValidator(segment, _method, _peerId, retry + 1) 38 await segmentValidator(segment, _method, _peerId, retry + 1)
diff --git a/scripts/create-move-video-storage-job.ts b/scripts/create-move-video-storage-job.ts
index 13ba3c0b7..c402115f0 100644
--- a/scripts/create-move-video-storage-job.ts
+++ b/scripts/create-move-video-storage-job.ts
@@ -72,6 +72,8 @@ async function run () {
72 for (const id of ids) { 72 for (const id of ids) {
73 const videoFull = await VideoModel.loadFull(id) 73 const videoFull = await VideoModel.loadFull(id)
74 74
75 if (videoFull.isLive) continue
76
75 const files = videoFull.VideoFiles || [] 77 const files = videoFull.VideoFiles || []
76 const hls = videoFull.getHLSPlaylist() 78 const hls = videoFull.getHLSPlaylist()
77 79