X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Flib%2Fjob-queue%2Fhandlers%2Fvideo-transcoding.ts;h=5afca65cab154fa62be86e5f2a0eb8a18a111d85;hb=9452d4fd3321148fb80b64a67bd9983fee6c208e;hp=02902b0b8b9faabd23b706bf6319cedb47fde9f3;hpb=3318147300b4f998adf728eb0a5a14a4c1829c51;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/lib/job-queue/handlers/video-transcoding.ts b/server/lib/job-queue/handlers/video-transcoding.ts index 02902b0b8..5afca65ca 100644 --- a/server/lib/job-queue/handlers/video-transcoding.ts +++ b/server/lib/job-queue/handlers/video-transcoding.ts @@ -1,5 +1,5 @@ import { Job } from 'bull' -import { TranscodeOptionsType } from '@server/helpers/ffmpeg-utils' +import { TranscodeVODOptionsType } from '@server/helpers/ffmpeg' import { addTranscodingJob, getTranscodingJobPriority } from '@server/lib/video' import { VideoPathManager } from '@server/lib/video-path-manager' import { moveToFailedTranscodingState, moveToNextState } from '@server/lib/video-state' @@ -10,13 +10,13 @@ import { pick } from '@shared/core-utils' import { HLSTranscodingPayload, MergeAudioTranscodingPayload, - NewResolutionTranscodingPayload, + NewWebTorrentResolutionTranscodingPayload, OptimizeTranscodingPayload, VideoResolution, VideoTranscodingPayload } from '@shared/models' import { retryTransactionWrapper } from '../../../helpers/database-utils' -import { computeLowerResolutionsToTranscode } from '../../../helpers/ffprobe-utils' +import { computeLowerResolutionsToTranscode } from '../../../helpers/ffmpeg' import { logger, loggerTagsFactory } from '../../../helpers/logger' import { CONFIG } from '../../../initializers/config' import { VideoModel } from '../../../models/video/video' @@ -25,7 +25,7 @@ import { mergeAudioVideofile, optimizeOriginalVideofile, transcodeNewWebTorrentResolution -} from '../../transcoding/video-transcoding' +} from '../../transcoding/transcoding' type HandlerFunction = (job: Job, payload: VideoTranscodingPayload, video: MVideoFullLight, user: MUser) => Promise @@ -42,7 +42,7 @@ async function processVideoTranscoding (job: Job) { const payload = job.data as VideoTranscodingPayload logger.info('Processing transcoding job %d.', job.id, lTags(payload.videoUUID)) - const video = await VideoModel.loadAndPopulateAccountAndServerAndTags(payload.videoUUID) + const video = await VideoModel.loadFull(payload.videoUUID) // No video, maybe deleted? if (!video) { logger.info('Do not process job %d, video does not exist.', job.id, lTags(payload.videoUUID)) @@ -110,7 +110,7 @@ async function handleHLSJob (job: Job, payload: HLSTranscodingPayload, video: MV async function handleNewWebTorrentResolutionJob ( job: Job, - payload: NewResolutionTranscodingPayload, + payload: NewWebTorrentResolutionTranscodingPayload, video: MVideoFullLight, user: MUserId ) { @@ -168,19 +168,19 @@ async function onHlsPlaylistGeneration (video: MVideoFullLight, user: MUser, pay } await VideoJobInfoModel.decrease(video.uuid, 'pendingTranscode') - await retryTransactionWrapper(moveToNextState, video, payload.isNewVideo) + await retryTransactionWrapper(moveToNextState, { video, isNewVideo: payload.isNewVideo }) } async function onVideoFirstWebTorrentTranscoding ( videoArg: MVideoWithFile, payload: OptimizeTranscodingPayload | MergeAudioTranscodingPayload, - transcodeType: TranscodeOptionsType, + transcodeType: TranscodeVODOptionsType, user: MUserId ) { - const { resolution, isPortraitMode, audioStream } = await videoArg.getMaxQualityFileInfo() + const { resolution, isPortraitMode, audioStream } = await videoArg.probeMaxQualityFile() // Maybe the video changed in database, refresh it - const videoDatabase = await VideoModel.loadAndPopulateAccountAndServerAndTags(videoArg.uuid) + const videoDatabase = await VideoModel.loadFull(videoArg.uuid) // Video does not exist anymore if (!videoDatabase) return undefined @@ -210,19 +210,22 @@ async function onVideoFirstWebTorrentTranscoding ( // Move to next state if there are no other resolutions to generate if (!hasHls && !hasNewResolutions) { - await retryTransactionWrapper(moveToNextState, videoDatabase, payload.isNewVideo) + await retryTransactionWrapper(moveToNextState, { video: videoDatabase, isNewVideo: payload.isNewVideo }) } } async function onNewWebTorrentFileResolution ( video: MVideo, user: MUserId, - payload: NewResolutionTranscodingPayload | MergeAudioTranscodingPayload + payload: NewWebTorrentResolutionTranscodingPayload | MergeAudioTranscodingPayload ) { - await createHlsJobIfEnabled(user, { hasAudio: true, copyCodecs: true, isMaxQuality: false, ...payload }) + if (payload.createHLSIfNeeded) { + await createHlsJobIfEnabled(user, { hasAudio: true, copyCodecs: true, isMaxQuality: false, ...payload }) + } + await VideoJobInfoModel.decrease(video.uuid, 'pendingTranscode') - await retryTransactionWrapper(moveToNextState, video, payload.isNewVideo) + await retryTransactionWrapper(moveToNextState, { video, isNewVideo: payload.isNewVideo }) } // --------------------------------------------------------------------------- @@ -282,6 +285,7 @@ async function createLowerResolutionsJobs (options: { resolution, isPortraitMode, hasAudio, + createHLSIfNeeded: true, isNewVideo }