1 import { move } from 'fs-extra'
2 import { dirname, join } from 'path'
3 import { logger, LoggerTagsFn } from '@server/helpers/logger'
4 import { onTranscodingEnded } from '@server/lib/transcoding/ended-transcoding'
5 import { onWebTorrentVideoFileTranscoding } from '@server/lib/transcoding/web-transcoding'
6 import { buildNewFile } from '@server/lib/video-file'
7 import { VideoModel } from '@server/models/video/video'
8 import { MVideoFullLight } from '@server/types/models'
9 import { MRunnerJob } from '@server/types/models/runners'
10 import { RunnerJobVODAudioMergeTranscodingPrivatePayload, RunnerJobVODWebVideoTranscodingPrivatePayload } from '@shared/models'
12 export async function onVODWebVideoOrAudioMergeTranscodingJob (options: {
13 video: MVideoFullLight
15 privatePayload: RunnerJobVODWebVideoTranscodingPrivatePayload | RunnerJobVODAudioMergeTranscodingPrivatePayload
17 const { video, videoFilePath, privatePayload } = options
19 const videoFile = await buildNewFile({ path: videoFilePath, mode: 'web-video' })
20 videoFile.videoId = video.id
22 const newVideoFilePath = join(dirname(videoFilePath), videoFile.filename)
23 await move(videoFilePath, newVideoFilePath)
25 await onWebTorrentVideoFileTranscoding({
28 videoOutputPath: newVideoFilePath
31 await onTranscodingEnded({ isNewVideo: privatePayload.isNewVideo, moveVideoToNextState: true, video })
34 export async function loadTranscodingRunnerVideo (runnerJob: MRunnerJob, lTags: LoggerTagsFn) {
35 const videoUUID = runnerJob.privatePayload.videoUUID
37 const video = await VideoModel.loadFull(videoUUID)
39 logger.info('Video %s does not exist anymore after transcoding runner job.', videoUUID, lTags(videoUUID))