From 84cae54e7a2595bea0c3ea106a4d111fd11a4ec6 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Fri, 5 Aug 2022 10:36:19 +0200 Subject: Add option to not transcode original resolution --- server/lib/job-queue/handlers/video-transcoding.ts | 26 ++++++++-------------- 1 file changed, 9 insertions(+), 17 deletions(-) (limited to 'server/lib/job-queue/handlers/video-transcoding.ts') diff --git a/server/lib/job-queue/handlers/video-transcoding.ts b/server/lib/job-queue/handlers/video-transcoding.ts index d3fb7778b..b07876a1c 100644 --- a/server/lib/job-queue/handlers/video-transcoding.ts +++ b/server/lib/job-queue/handlers/video-transcoding.ts @@ -1,5 +1,6 @@ import { Job } from 'bull' import { TranscodeVODOptionsType } from '@server/helpers/ffmpeg' +import { Hooks } from '@server/lib/plugins/hooks' import { addTranscodingJob, getTranscodingJobPriority } from '@server/lib/video' import { VideoPathManager } from '@server/lib/video-path-manager' import { moveToFailedTranscodingState, moveToNextState } from '@server/lib/video-state' @@ -16,7 +17,7 @@ import { VideoTranscodingPayload } from '@shared/models' import { retryTransactionWrapper } from '../../../helpers/database-utils' -import { computeLowerResolutionsToTranscode } from '../../../helpers/ffmpeg' +import { computeResolutionsToTranscode } from '../../../helpers/ffmpeg' import { logger, loggerTagsFactory } from '../../../helpers/logger' import { CONFIG } from '../../../initializers/config' import { VideoModel } from '../../../models/video/video' @@ -26,7 +27,6 @@ import { optimizeOriginalVideofile, transcodeNewWebTorrentResolution } from '../../transcoding/transcoding' -import { Hooks } from '@server/lib/plugins/hooks' type HandlerFunction = (job: Job, payload: VideoTranscodingPayload, video: MVideoFullLight, user: MUser) => Promise @@ -99,7 +99,6 @@ async function handleHLSJob (job: Job, payload: HLSTranscodingPayload, video: MV videoInputPath, resolution: payload.resolution, copyCodecs: payload.copyCodecs, - isPortraitMode: payload.isPortraitMode || false, job }) }) @@ -117,7 +116,7 @@ async function handleNewWebTorrentResolutionJob ( ) { logger.info('Handling WebTorrent transcoding job for %s.', video.uuid, lTags(video.uuid)) - await transcodeNewWebTorrentResolution(video, payload.resolution, payload.isPortraitMode || false, job) + await transcodeNewWebTorrentResolution({ video, resolution: payload.resolution, job }) logger.info('WebTorrent transcoding job for %s ended.', video.uuid, lTags(video.uuid)) @@ -127,7 +126,7 @@ async function handleNewWebTorrentResolutionJob ( async function handleWebTorrentMergeAudioJob (job: Job, payload: MergeAudioTranscodingPayload, video: MVideoFullLight, user: MUserId) { logger.info('Handling merge audio transcoding job for %s.', video.uuid, lTags(video.uuid)) - await mergeAudioVideofile(video, payload.resolution, job) + await mergeAudioVideofile({ video, resolution: payload.resolution, job }) logger.info('Merge audio transcoding job for %s ended.', video.uuid, lTags(video.uuid)) @@ -137,7 +136,7 @@ async function handleWebTorrentMergeAudioJob (job: Job, payload: MergeAudioTrans async function handleWebTorrentOptimizeJob (job: Job, payload: OptimizeTranscodingPayload, video: MVideoFullLight, user: MUserId) { logger.info('Handling optimize transcoding job for %s.', video.uuid, lTags(video.uuid)) - const { transcodeType } = await optimizeOriginalVideofile(video, video.getMaxQualityFile(), job) + const { transcodeType } = await optimizeOriginalVideofile({ video, inputVideoFile: video.getMaxQualityFile(), job }) logger.info('Optimize transcoding job for %s ended.', video.uuid, lTags(video.uuid)) @@ -161,7 +160,6 @@ async function onHlsPlaylistGeneration (video: MVideoFullLight, user: MUser, pay video, user, videoFileResolution: payload.resolution, - isPortraitMode: payload.isPortraitMode, hasAudio: payload.hasAudio, isNewVideo: payload.isNewVideo ?? true, type: 'hls' @@ -178,7 +176,7 @@ async function onVideoFirstWebTorrentTranscoding ( transcodeType: TranscodeVODOptionsType, user: MUserId ) { - const { resolution, isPortraitMode, audioStream } = await videoArg.probeMaxQualityFile() + const { resolution, audioStream } = await videoArg.probeMaxQualityFile() // Maybe the video changed in database, refresh it const videoDatabase = await VideoModel.loadFull(videoArg.uuid) @@ -189,7 +187,6 @@ async function onVideoFirstWebTorrentTranscoding ( const originalFileHLSPayload = { ...payload, - isPortraitMode, hasAudio: !!audioStream, resolution: videoDatabase.getMaxQualityFile().resolution, // If we quick transcoded original file, force transcoding for HLS to avoid some weird playback issues @@ -202,7 +199,6 @@ async function onVideoFirstWebTorrentTranscoding ( user, videoFileResolution: resolution, hasAudio: !!audioStream, - isPortraitMode, type: 'webtorrent', isNewVideo: payload.isNewVideo ?? true }) @@ -235,7 +231,6 @@ async function createHlsJobIfEnabled (user: MUserId, payload: { videoUUID: string resolution: number hasAudio: boolean - isPortraitMode?: boolean copyCodecs: boolean isMaxQuality: boolean isNewVideo?: boolean @@ -250,7 +245,7 @@ async function createHlsJobIfEnabled (user: MUserId, payload: { type: 'new-resolution-to-hls', autoDeleteWebTorrentIfNeeded: true, - ...pick(payload, [ 'videoUUID', 'resolution', 'isPortraitMode', 'copyCodecs', 'isMaxQuality', 'isNewVideo', 'hasAudio' ]) + ...pick(payload, [ 'videoUUID', 'resolution', 'copyCodecs', 'isMaxQuality', 'isNewVideo', 'hasAudio' ]) } await addTranscodingJob(hlsTranscodingPayload, jobOptions) @@ -262,16 +257,15 @@ async function createLowerResolutionsJobs (options: { video: MVideoFullLight user: MUserId videoFileResolution: number - isPortraitMode: boolean hasAudio: boolean isNewVideo: boolean type: 'hls' | 'webtorrent' }) { - const { video, user, videoFileResolution, isPortraitMode, isNewVideo, hasAudio, type } = options + const { video, user, videoFileResolution, isNewVideo, hasAudio, type } = options // Create transcoding jobs if there are enabled resolutions const resolutionsEnabled = await Hooks.wrapObject( - computeLowerResolutionsToTranscode(videoFileResolution, 'vod'), + computeResolutionsToTranscode({ inputResolution: videoFileResolution, type: 'vod', includeInputResolution: false }), 'filter:transcoding.auto.lower-resolutions-to-transcode.result', options ) @@ -289,7 +283,6 @@ async function createLowerResolutionsJobs (options: { type: 'new-resolution-to-webtorrent', videoUUID: video.uuid, resolution, - isPortraitMode, hasAudio, createHLSIfNeeded: true, isNewVideo @@ -303,7 +296,6 @@ async function createLowerResolutionsJobs (options: { type: 'new-resolution-to-hls', videoUUID: video.uuid, resolution, - isPortraitMode, hasAudio, copyCodecs: false, isMaxQuality: false, -- cgit v1.2.3