Fix HLS playlist generation with 0 duration length
This commit is contained in:
parent
a287136427
commit
9cd06903f4
|
@ -8,7 +8,7 @@ import { sha256 } from '@shared/extra-utils'
|
||||||
import { getVideoStreamDimensionsInfo } from '@shared/ffmpeg'
|
import { getVideoStreamDimensionsInfo } from '@shared/ffmpeg'
|
||||||
import { VideoStorage } from '@shared/models'
|
import { VideoStorage } from '@shared/models'
|
||||||
import { getAudioStreamCodec, getVideoStreamCodec } from '../helpers/ffmpeg'
|
import { getAudioStreamCodec, getVideoStreamCodec } from '../helpers/ffmpeg'
|
||||||
import { logger } from '../helpers/logger'
|
import { logger, loggerTagsFactory } from '../helpers/logger'
|
||||||
import { doRequest, doRequestAndSaveToFile } from '../helpers/requests'
|
import { doRequest, doRequestAndSaveToFile } from '../helpers/requests'
|
||||||
import { generateRandomString } from '../helpers/utils'
|
import { generateRandomString } from '../helpers/utils'
|
||||||
import { CONFIG } from '../initializers/config'
|
import { CONFIG } from '../initializers/config'
|
||||||
|
@ -20,6 +20,8 @@ import { storeHLSFileFromFilename } from './object-storage'
|
||||||
import { generateHLSMasterPlaylistFilename, generateHlsSha256SegmentsFilename, getHlsResolutionPlaylistFilename } from './paths'
|
import { generateHLSMasterPlaylistFilename, generateHlsSha256SegmentsFilename, getHlsResolutionPlaylistFilename } from './paths'
|
||||||
import { VideoPathManager } from './video-path-manager'
|
import { VideoPathManager } from './video-path-manager'
|
||||||
|
|
||||||
|
const lTags = loggerTagsFactory('hls')
|
||||||
|
|
||||||
async function updateStreamingPlaylistsInfohashesIfNeeded () {
|
async function updateStreamingPlaylistsInfohashesIfNeeded () {
|
||||||
const playlistsToUpdate = await VideoStreamingPlaylistModel.listByIncorrectPeerVersion()
|
const playlistsToUpdate = await VideoStreamingPlaylistModel.listByIncorrectPeerVersion()
|
||||||
|
|
||||||
|
@ -48,7 +50,7 @@ async function updatePlaylistAfterFileChange (video: MVideo, playlist: MStreamin
|
||||||
|
|
||||||
video.setHLSPlaylist(playlistWithFiles)
|
video.setHLSPlaylist(playlistWithFiles)
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
logger.info('Cannot update playlist after file change. Maybe due to concurrent transcoding', { err })
|
logger.warn('Cannot update playlist after file change. Maybe due to concurrent transcoding', { err })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -95,6 +97,8 @@ function updateMasterHLSPlaylist (video: MVideo, playlistArg: MStreamingPlaylist
|
||||||
const masterPlaylistPath = VideoPathManager.Instance.getFSHLSOutputPath(video, playlist.playlistFilename)
|
const masterPlaylistPath = VideoPathManager.Instance.getFSHLSOutputPath(video, playlist.playlistFilename)
|
||||||
await writeFile(masterPlaylistPath, masterPlaylists.join('\n') + '\n')
|
await writeFile(masterPlaylistPath, masterPlaylists.join('\n') + '\n')
|
||||||
|
|
||||||
|
logger.info('Updating %s master playlist file of video %s', masterPlaylistPath, video.uuid, lTags(video.uuid))
|
||||||
|
|
||||||
if (playlist.storage === VideoStorage.OBJECT_STORAGE) {
|
if (playlist.storage === VideoStorage.OBJECT_STORAGE) {
|
||||||
playlist.playlistUrl = await storeHLSFileFromFilename(playlist, playlist.playlistFilename)
|
playlist.playlistUrl = await storeHLSFileFromFilename(playlist, playlist.playlistFilename)
|
||||||
await remove(masterPlaylistPath)
|
await remove(masterPlaylistPath)
|
||||||
|
|
|
@ -2016,7 +2016,7 @@ export class VideoModel extends Model<Partial<AttributesOnly<VideoModel>>> {
|
||||||
}
|
}
|
||||||
|
|
||||||
getBandwidthBits (this: MVideo, videoFile: MVideoFile) {
|
getBandwidthBits (this: MVideo, videoFile: MVideoFile) {
|
||||||
if (!this.duration) throw new Error(`Cannot get bandwidth bits because video ${this.url} has duration of 0`)
|
if (!this.duration) return videoFile.size
|
||||||
|
|
||||||
return Math.ceil((videoFile.size * 8) / this.duration)
|
return Math.ceil((videoFile.size * 8) / this.duration)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue