]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/commitdiff
Fix transcoding error
authorChocobozzz <me@florianbigard.com>
Tue, 30 May 2023 07:35:21 +0000 (09:35 +0200)
committerChocobozzz <me@florianbigard.com>
Tue, 30 May 2023 07:35:21 +0000 (09:35 +0200)
When transcoding.always_transcode_original_resolution is false

server/lib/job-queue/handlers/video-transcoding.ts
server/lib/transcoding/shared/job-builders/transcoding-job-queue-builder.ts
server/lib/transcoding/transcoding-resolutions.ts
server/lib/transcoding/web-transcoding.ts

index 39f078bf06d3e9b3df212db525bcad32379ee6a2..f8758f1702d5e08a45dd09bcdac5415d90aaaa20 100644 (file)
@@ -75,21 +75,21 @@ export {
 // ---------------------------------------------------------------------------
 
 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))
+  logger.info('Handling merge audio transcoding job for %s.', video.uuid, lTags(video.uuid), { payload })
 
   await mergeAudioVideofile({ video, resolution: payload.resolution, fps: payload.fps, job })
 
-  logger.info('Merge audio transcoding job for %s ended.', video.uuid, lTags(video.uuid))
+  logger.info('Merge audio transcoding job for %s ended.', video.uuid, lTags(video.uuid), { payload })
 
   await onTranscodingEnded({ isNewVideo: payload.isNewVideo, moveVideoToNextState: !payload.hasChildren, video })
 }
 
 async function handleWebTorrentOptimizeJob (job: Job, payload: OptimizeTranscodingPayload, video: MVideoFullLight, user: MUserId) {
-  logger.info('Handling optimize transcoding job for %s.', video.uuid, lTags(video.uuid))
+  logger.info('Handling optimize transcoding job for %s.', video.uuid, lTags(video.uuid), { payload })
 
   await optimizeOriginalVideofile({ video, inputVideoFile: video.getMaxQualityFile(), quickTranscode: payload.quickTranscode, job })
 
-  logger.info('Optimize transcoding job for %s ended.', video.uuid, lTags(video.uuid))
+  logger.info('Optimize transcoding job for %s ended.', video.uuid, lTags(video.uuid), { payload })
 
   await onTranscodingEnded({ isNewVideo: payload.isNewVideo, moveVideoToNextState: !payload.hasChildren, video })
 }
@@ -97,11 +97,11 @@ async function handleWebTorrentOptimizeJob (job: Job, payload: OptimizeTranscodi
 // ---------------------------------------------------------------------------
 
 async function handleNewWebTorrentResolutionJob (job: Job, payload: NewWebTorrentResolutionTranscodingPayload, video: MVideoFullLight) {
-  logger.info('Handling WebTorrent transcoding job for %s.', video.uuid, lTags(video.uuid))
+  logger.info('Handling WebTorrent transcoding job for %s.', video.uuid, lTags(video.uuid), { payload })
 
   await transcodeNewWebTorrentResolution({ video, resolution: payload.resolution, fps: payload.fps, job })
 
-  logger.info('WebTorrent transcoding job for %s ended.', video.uuid, lTags(video.uuid))
+  logger.info('WebTorrent transcoding job for %s ended.', video.uuid, lTags(video.uuid), { payload })
 
   await onTranscodingEnded({ isNewVideo: payload.isNewVideo, moveVideoToNextState: true, video })
 }
@@ -109,7 +109,7 @@ async function handleNewWebTorrentResolutionJob (job: Job, payload: NewWebTorren
 // ---------------------------------------------------------------------------
 
 async function handleHLSJob (job: Job, payload: HLSTranscodingPayload, videoArg: MVideoFullLight) {
-  logger.info('Handling HLS transcoding job for %s.', videoArg.uuid, lTags(videoArg.uuid))
+  logger.info('Handling HLS transcoding job for %s.', videoArg.uuid, lTags(videoArg.uuid), { payload })
 
   const inputFileMutexReleaser = await VideoPathManager.Instance.lockFiles(videoArg.uuid)
   let video: MVideoFullLight
@@ -138,7 +138,7 @@ async function handleHLSJob (job: Job, payload: HLSTranscodingPayload, videoArg:
     inputFileMutexReleaser()
   }
 
-  logger.info('HLS transcoding job for %s ended.', video.uuid, lTags(video.uuid))
+  logger.info('HLS transcoding job for %s ended.', video.uuid, lTags(video.uuid), { payload })
 
   if (payload.deleteWebTorrentFiles === true) {
     logger.info('Removing WebTorrent files of %s now we have a HLS version of it.', video.uuid, lTags(video.uuid))
index fa2ac70bf1d1646c978e657fdb6fe438d464d001..4f802e2a67e947d6b535eedcdceb45729ad46ccf 100644 (file)
@@ -18,7 +18,7 @@ import {
 } from '@shared/models'
 import { getTranscodingJobPriority } from '../../transcoding-priority'
 import { canDoQuickTranscode } from '../../transcoding-quick-transcode'
-import { computeResolutionsToTranscode } from '../../transcoding-resolutions'
+import { buildOriginalFileResolution, computeResolutionsToTranscode } from '../../transcoding-resolutions'
 import { AbstractJobBuilder } from './abstract-job-builder'
 
 export class TranscodingJobQueueBuilder extends AbstractJobBuilder {
@@ -55,7 +55,7 @@ export class TranscodingJobQueueBuilder extends AbstractJobBuilder {
 
         const maxResolution = await isAudioFile(videoFilePath, probe)
           ? DEFAULT_AUDIO_RESOLUTION
-          : resolution
+          : buildOriginalFileResolution(resolution)
 
         if (CONFIG.TRANSCODING.HLS.ENABLED === true) {
           nextTranscodingSequentialJobPayloads.push([
index 91f4d18d89e549eea0ed99c72950e9a48fbfd0c3..9a6bf57229e16ba4bd3225c466f5aa2888c5824e 100644 (file)
@@ -2,6 +2,27 @@ import { CONFIG } from '@server/initializers/config'
 import { toEven } from '@shared/core-utils'
 import { VideoResolution } from '@shared/models'
 
+export function buildOriginalFileResolution (inputResolution: number) {
+  if (CONFIG.TRANSCODING.ALWAYS_TRANSCODE_ORIGINAL_RESOLUTION === true) {
+    return toEven(inputResolution)
+  }
+
+  const resolutions = computeResolutionsToTranscode({
+    input: inputResolution,
+    type: 'vod',
+    includeInput: false,
+    strictLower: false,
+    // We don't really care about the audio resolution in this context
+    hasAudio: true
+  })
+
+  if (resolutions.length === 0) {
+    return toEven(inputResolution)
+  }
+
+  return Math.max(...resolutions)
+}
+
 export function computeResolutionsToTranscode (options: {
   input: number
   type: 'vod' | 'live'
index 22bd238aea8373fbe0624a539f647b3e88eac63f..7cc8f20bce14aa75a8f8d4132528a0d42e38bb34 100644 (file)
@@ -3,8 +3,8 @@ import { copyFile, move, remove, stat } from 'fs-extra'
 import { basename, join } from 'path'
 import { computeOutputFPS } from '@server/helpers/ffmpeg'
 import { createTorrentAndSetInfoHash } from '@server/helpers/webtorrent'
+import { VideoModel } from '@server/models/video/video'
 import { MVideoFile, MVideoFullLight } from '@server/types/models'
-import { toEven } from '@shared/core-utils'
 import { ffprobePromise, getVideoStreamDuration, getVideoStreamFPS, TranscodeVODOptionsType } from '@shared/ffmpeg'
 import { VideoResolution, VideoStorage } from '@shared/models'
 import { CONFIG } from '../../initializers/config'
@@ -13,8 +13,7 @@ import { generateWebTorrentVideoFilename } from '../paths'
 import { buildFileMetadata } from '../video-file'
 import { VideoPathManager } from '../video-path-manager'
 import { buildFFmpegVOD } from './shared'
-import { computeResolutionsToTranscode } from './transcoding-resolutions'
-import { VideoModel } from '@server/models/video/video'
+import { buildOriginalFileResolution } from './transcoding-resolutions'
 
 // Optimize the original video file and replace it. The resolution is not changed.
 export async function optimizeOriginalVideofile (options: {
@@ -248,26 +247,3 @@ export async function onWebTorrentVideoFileTranscoding (options: {
     mutexReleaser()
   }
 }
-
-// ---------------------------------------------------------------------------
-
-function buildOriginalFileResolution (inputResolution: number) {
-  if (CONFIG.TRANSCODING.ALWAYS_TRANSCODE_ORIGINAL_RESOLUTION === true) {
-    return toEven(inputResolution)
-  }
-
-  const resolutions = computeResolutionsToTranscode({
-    input: inputResolution,
-    type: 'vod',
-    includeInput: false,
-    strictLower: false,
-    // We don't really care about the audio resolution in this context
-    hasAudio: true
-  })
-
-  if (resolutions.length === 0) {
-    return toEven(inputResolution)
-  }
-
-  return Math.max(...resolutions)
-}