OptimizeTranscodingPayload,
VideoTranscodingPayload
} from '@shared/models'
+import { getTranscodingJobPriority } from '../../transcoding-priority'
import { canDoQuickTranscode } from '../../transcoding-quick-transcode'
import { computeResolutionsToTranscode } from '../../transcoding-resolutions'
import { AbstractJobBuilder } from './abstract-job-builder'
videoFile: MVideoFile
isNewVideo: boolean
user: MUserId
+ videoFileAlreadyLocked: boolean
}) {
- const { video, videoFile, isNewVideo, user } = options
+ const { video, videoFile, isNewVideo, user, videoFileAlreadyLocked } = options
let mergeOrOptimizePayload: MergeAudioTranscodingPayload | OptimizeTranscodingPayload
let nextTranscodingSequentialJobPayloads: (NewWebTorrentResolutionTranscodingPayload | HLSTranscodingPayload)[][] = []
- const mutexReleaser = await VideoPathManager.Instance.lockFiles(video.uuid)
+ const mutexReleaser = videoFileAlreadyLocked
+ ? () => {}
+ : await VideoPathManager.Instance.lockFiles(video.uuid)
try {
+ await video.reload()
+ await videoFile.reload()
+
await VideoPathManager.Instance.makeAvailableVideoFile(videoFile.withVideoOrPlaylist(video), async videoFilePath => {
const probe = await ffprobePromise(videoFilePath)
return {
type: 'video-transcoding' as 'video-transcoding',
- priority: await this.getTranscodingJobPriority({ user, fallback: undefined }),
+ priority: await getTranscodingJobPriority({ user, type: 'vod', fallback: undefined }),
payload
}
}