Delay notification when waiting for a live

This commit is contained in:
Chocobozzz 2020-11-12 17:13:32 +01:00
parent 2122606318
commit 501af82d99
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
3 changed files with 11 additions and 5 deletions

View File

@ -10,7 +10,7 @@ function segmentValidatorFactory (segmentsSha256Url: string, isLive: boolean) {
let segmentsJSON = fetchSha256Segments(segmentsSha256Url) let segmentsJSON = fetchSha256Segments(segmentsSha256Url)
const regex = /bytes=(\d+)-(\d+)/ const regex = /bytes=(\d+)-(\d+)/
return async function segmentValidator (segment: Segment, retry = 1) { return async function segmentValidator (segment: Segment, _method: string, _peerId: string, retry = 1) {
// Wait for hash generation from the server // Wait for hash generation from the server
if (isLive) await wait(1000) if (isLive) await wait(1000)
@ -28,7 +28,7 @@ function segmentValidatorFactory (segmentsSha256Url: string, isLive: boolean) {
await wait(1000) await wait(1000)
segmentsJSON = fetchSha256Segments(segmentsSha256Url) segmentsJSON = fetchSha256Segments(segmentsSha256Url)
await segmentValidator(segment, retry + 1) await segmentValidator(segment, _method, _peerId, retry + 1)
return return
} }

View File

@ -620,6 +620,7 @@ const VIDEO_LIVE = {
CLEANUP_DELAY: 1000 * 60 * 5, // 5 minutes CLEANUP_DELAY: 1000 * 60 * 5, // 5 minutes
SEGMENT_TIME_SECONDS: 4, // 4 seconds SEGMENT_TIME_SECONDS: 4, // 4 seconds
SEGMENTS_LIST_SIZE: 15, // 15 maximum segments in live playlist SEGMENTS_LIST_SIZE: 15, // 15 maximum segments in live playlist
EDGE_LIVE_DELAY_SEGMENTS_NOTIFICATION: 3,
RTMP: { RTMP: {
CHUNK_SIZE: 60000, CHUNK_SIZE: 60000,
GOP_CACHE: true, GOP_CACHE: true,
@ -750,6 +751,7 @@ if (isTestInstance() === true) {
VIDEO_LIVE.CLEANUP_DELAY = 5000 VIDEO_LIVE.CLEANUP_DELAY = 5000
VIDEO_LIVE.SEGMENT_TIME_SECONDS = 2 VIDEO_LIVE.SEGMENT_TIME_SECONDS = 2
VIDEO_LIVE.EDGE_LIVE_DELAY_SEGMENTS_NOTIFICATION = 1
} }
updateWebserverUrls() updateWebserverUrls()

View File

@ -323,11 +323,15 @@ class LiveManager {
await video.save() await video.save()
videoLive.Video = video videoLive.Video = video
await federateVideoIfNeeded(video, false) setTimeout(() => {
federateVideoIfNeeded(video, false)
.catch(err => logger.error('Cannot federate live video %s.', video.url, { err }))
PeerTubeSocket.Instance.sendVideoLiveNewState(video)
}, VIDEO_LIVE.SEGMENT_TIME_SECONDS * 1000 * VIDEO_LIVE.EDGE_LIVE_DELAY_SEGMENTS_NOTIFICATION)
PeerTubeSocket.Instance.sendVideoLiveNewState(video)
} catch (err) { } catch (err) {
logger.error('Cannot federate video %d.', videoLive.videoId, { err }) logger.error('Cannot save/federate live video %d.', videoLive.videoId, { err })
} finally { } finally {
masterWatcher.close() masterWatcher.close()
.catch(err => logger.error('Cannot close master watcher of %s.', outPath, { err })) .catch(err => logger.error('Cannot close master watcher of %s.', outPath, { err }))