Wait master playlist generation

This commit is contained in:
Chocobozzz 2023-05-19 12:01:36 +02:00
parent 72d606dc07
commit 30453cb5ba
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
1 changed files with 12 additions and 7 deletions

View File

@ -17,6 +17,7 @@ import {
import { VideoFileModel } from '@server/models/video/video-file'
import { VideoStreamingPlaylistModel } from '@server/models/video/video-streaming-playlist'
import { MStreamingPlaylistVideo, MUserId, MVideoLiveVideo } from '@server/types/models'
import { wait } from '@shared/core-utils'
import { VideoStorage, VideoStreamingPlaylistType } from '@shared/models'
import {
generateHLSMasterPlaylistFilename,
@ -184,14 +185,21 @@ class MuxingSession extends EventEmitter {
}
private watchMasterFile () {
const watcher = this.filesWatcher.on('change', async path => {
this.filesWatcher.on('add', async path => {
if (path !== join(this.outDirectory, this.streamingPlaylist.playlistFilename)) return
if (this.masterPlaylistCreated === true) return
try {
const masterPlaylistContent = await readFile(path, 'utf8')
// Not generated yet
if (!masterPlaylistContent) return
let masterPlaylistContent: string
do {
masterPlaylistContent = await readFile(path, 'utf8')
if (!masterPlaylistContent) {
await wait(250)
logger.debug('Waiting for master playlist generation for ' + this.videoUUID, this.lTags())
}
} while (!masterPlaylistContent) // Not generated yet
if (this.streamingPlaylist.storage === VideoStorage.OBJECT_STORAGE) {
const url = await storeHLSFileFromFilename(this.streamingPlaylist, this.streamingPlaylist.playlistFilename)
@ -209,9 +217,6 @@ class MuxingSession extends EventEmitter {
this.masterPlaylistCreated = true
logger.info('Master playlist file for %s has been created', this.videoUUID, this.lTags())
watcher.close()
.catch(err => logger.error('Cannot close watcher', { err }))
})
}