-import { Job } from 'bull'
+import { Job } from 'bullmq'
import { move, remove } from 'fs-extra'
import { join } from 'path'
import { addIntroOutro, addWatermark, cutVideo } from '@server/helpers/ffmpeg'
import { generateWebTorrentVideoFilename } from '@server/lib/paths'
import { VideoTranscodingProfilesManager } from '@server/lib/transcoding/default-transcoding-profiles'
import { isAbleToUploadVideo } from '@server/lib/user'
-import { addOptimizeOrMergeAudioJob } from '@server/lib/video'
+import { buildOptimizeOrMergeAudioJob } from '@server/lib/video'
+import { removeHLSPlaylist, removeWebTorrentFile } from '@server/lib/video-file'
import { VideoPathManager } from '@server/lib/video-path-manager'
import { approximateIntroOutroAdditionalSize } from '@server/lib/video-studio'
import { UserModel } from '@server/models/user/user'
} from '@shared/extra-utils'
import {
VideoStudioEditionPayload,
- VideoStudioTaskPayload,
+ VideoStudioTask,
VideoStudioTaskCutPayload,
VideoStudioTaskIntroPayload,
VideoStudioTaskOutroPayload,
- VideoStudioTaskWatermarkPayload,
- VideoStudioTask
+ VideoStudioTaskPayload,
+ VideoStudioTaskWatermarkPayload
} from '@shared/models'
import { logger, loggerTagsFactory } from '../../../helpers/logger'
+import { JobQueue } from '../job-queue'
const lTagsBase = loggerTagsFactory('video-edition')
const payload = job.data as VideoStudioEditionPayload
const lTags = lTagsBase(payload.videoUUID)
- logger.info('Process video studio edition of %s in job %d.', payload.videoUUID, job.id, lTags)
+ logger.info('Process video studio edition of %s in job %s.', payload.videoUUID, job.id, lTags)
- const video = await VideoModel.loadAndPopulateAccountAndServerAndTags(payload.videoUUID)
+ const video = await VideoModel.loadFull(payload.videoUUID)
// No video, maybe deleted?
if (!video) {
await move(editionResultPath, outputPath)
await createTorrentAndSetInfoHashFromPath(video, newFile, outputPath)
-
await removeAllFiles(video, newFile)
await newFile.save()
await federateVideoIfNeeded(video, false, undefined)
const user = await UserModel.loadByVideoId(video.id)
- await addOptimizeOrMergeAudioJob({ video, videoFile: newFile, user, isNewVideo: false })
+
+ await JobQueue.Instance.createJob(
+ await buildOptimizeOrMergeAudioJob({ video, videoFile: newFile, user, isNewVideo: false })
+ )
}
// ---------------------------------------------------------------------------
...pick(options, [ 'inputPath', 'outputPath' ]),
start: task.options.start,
- end: task.options.end
+ end: task.options.end,
+
+ availableEncoders: VideoTranscodingProfilesManager.Instance.getAvailableEncoders(),
+ profile: CONFIG.TRANSCODING.PROFILE
})
}
}
async function removeAllFiles (video: MVideoWithAllFiles, webTorrentFileException: MVideoFile) {
- const hls = video.getHLSPlaylist()
-
- if (hls) {
- await video.removeStreamingPlaylistFiles(hls)
- await hls.destroy()
- }
+ await removeHLSPlaylist(video)
for (const file of video.VideoFiles) {
if (file.id === webTorrentFileException.id) continue
- await video.removeWebTorrentFileAndTorrent(file)
- await file.destroy()
+ await removeWebTorrentFile(video, file.id)
}
}