+ const video = await VideoModel.loadAndPopulateAccountAndServerAndTags(uuid)
+ if (!video) throw new Error('Video not found.')
+
+ const dataInput: VideoTranscodingPayload[] = []
+ const maxResolution = video.getMaxQualityFile().resolution
+
+ // Generate HLS files
+ if (options.generateHls || CONFIG.TRANSCODING.WEBTORRENT.ENABLED === false) {
+ const resolutionsEnabled = options.resolution
+ ? [ parseInt(options.resolution) ]
+ : computeLowerResolutionsToTranscode(maxResolution, 'vod').concat([ maxResolution ])
+
+ for (const resolution of resolutionsEnabled) {
+ dataInput.push({
+ type: 'new-resolution-to-hls',
+ videoUUID: video.uuid,
+ resolution,
+
+ // FIXME: check the file has audio and is not in portrait mode
+ isPortraitMode: false,
+ hasAudio: true,
+
+ copyCodecs: false,
+ isNewVideo: false,
+ isMaxQuality: maxResolution === resolution,
+ autoDeleteWebTorrentIfNeeded: false
+ })
+ }
+ } else {
+ if (options.resolution !== undefined) {
+ dataInput.push({
+ type: 'new-resolution-to-webtorrent',
+ videoUUID: video.uuid,
+
+ createHLSIfNeeded: true,
+
+ // FIXME: check the file has audio
+ hasAudio: true,
+
+ isNewVideo: false,
+ resolution: parseInt(options.resolution)
+ })
+ } else {
+ if (video.VideoFiles.length === 0) {
+ console.error('Cannot regenerate webtorrent files with a HLS only video.')
+ return
+ }
+
+ dataInput.push({
+ type: 'optimize-to-webtorrent',
+ videoUUID: video.uuid,
+ isNewVideo: false
+ })
+ }