import { VideoStreamingPlaylistModel } from '@server/models/video/video-streaming-playlist'
import { MStreamingPlaylistVideo, MVideo, MVideoLiveSession, MVideoLiveVideo } from '@server/types/models'
import { pick, wait } from '@shared/core-utils'
-import { LiveVideoError, VideoState, VideoStreamingPlaylistType } from '@shared/models'
+import { LiveVideoError, VideoState, VideoStorage, VideoStreamingPlaylistType } from '@shared/models'
import { federateVideoIfNeeded } from '../activitypub/videos'
import { JobQueue } from '../job-queue'
import { generateHLSMasterPlaylistFilename, generateHlsSha256SegmentsFilename, getLiveReplayBaseDirectory } from '../paths'
import { PeerTubeSocket } from '../peertube-socket'
import { Hooks } from '../plugins/hooks'
import { LiveQuotaStore } from './live-quota-store'
-import { cleanupPermanentLive } from './live-utils'
+import { cleanupAndDestroyPermanentLive } from './live-utils'
import { MuxingSession } from './shared'
const NodeRtmpSession = require('node-media-server/src/node_rtmp_session')
if (oldStreamingPlaylist) {
if (!videoLive.permanentLive) throw new Error('Found previous session in a non permanent live: ' + video.uuid)
- await cleanupPermanentLive(video, oldStreamingPlaylist)
+ await cleanupAndDestroyPermanentLive(video, oldStreamingPlaylist)
}
this.videoSessions.set(video.id, sessionId)
)
const allResolutions = await Hooks.wrapObject(
- this.buildAllResolutionsToTranscode(resolution),
+ this.buildAllResolutionsToTranscode(resolution, hasAudio),
'filter:transcoding.auto.resolutions-to-transcode.result',
{ video }
)
...pick(options, [ 'streamingPlaylist', 'inputUrl', 'bitrate', 'ratio', 'fps', 'allResolutions', 'hasAudio' ])
})
- muxingSession.on('master-playlist-created', () => this.publishAndFederateLive(videoLive, localLTags))
+ muxingSession.on('live-ready', () => this.publishAndFederateLive(videoLive, localLTags))
muxingSession.on('bad-socket-health', ({ videoId }) => {
logger.error(
return join(directory, files.sort().reverse()[0])
}
- private buildAllResolutionsToTranscode (originResolution: number) {
+ private buildAllResolutionsToTranscode (originResolution: number, hasAudio: boolean) {
const includeInput = CONFIG.LIVE.TRANSCODING.ALWAYS_TRANSCODE_ORIGINAL_RESOLUTION
const resolutionsEnabled = CONFIG.LIVE.TRANSCODING.ENABLED
- ? computeResolutionsToTranscode({ input: originResolution, type: 'live', includeInput, strictLower: false })
+ ? computeResolutionsToTranscode({ input: originResolution, type: 'live', includeInput, strictLower: false, hasAudio })
: []
if (resolutionsEnabled.length === 0) {
playlist.assignP2PMediaLoaderInfoHashes(video, allResolutions)
+ playlist.storage = CONFIG.OBJECT_STORAGE.ENABLED
+ ? VideoStorage.OBJECT_STORAGE
+ : VideoStorage.FILE_SYSTEM
+
return playlist.save()
}