diff --git a/server/helpers/ffmpeg/ffprobe-utils.ts b/server/helpers/ffmpeg/ffprobe-utils.ts index 8cfdba4f9..fb270b3cb 100644 --- a/server/helpers/ffmpeg/ffprobe-utils.ts +++ b/server/helpers/ffmpeg/ffprobe-utils.ts @@ -15,6 +15,7 @@ import { import { VideoResolution, VideoTranscodingFPS } from '@shared/models' import { CONFIG } from '../../initializers/config' import { VIDEO_TRANSCODING_FPS } from '../../initializers/constants' +import { toEven } from '../core-utils' import { logger } from '../logger' /** @@ -133,7 +134,8 @@ function computeResolutionsToTranscode (options: { } if (includeInput) { - resolutionsEnabled.add(input) + // Always use an even resolution to avoid issues with ffmpeg + resolutionsEnabled.add(toEven(input)) } return Array.from(resolutionsEnabled) diff --git a/server/lib/transcoding/transcoding.ts b/server/lib/transcoding/transcoding.ts index e6914db87..c7b61e9ba 100644 --- a/server/lib/transcoding/transcoding.ts +++ b/server/lib/transcoding/transcoding.ts @@ -444,7 +444,9 @@ async function generateHlsPlaylistCommon (options: { } function buildOriginalFileResolution (inputResolution: number) { - if (CONFIG.TRANSCODING.ALWAYS_TRANSCODE_ORIGINAL_RESOLUTION === true) return toEven(inputResolution) + if (CONFIG.TRANSCODING.ALWAYS_TRANSCODE_ORIGINAL_RESOLUTION === true) { + return toEven(inputResolution) + } const resolutions = computeResolutionsToTranscode({ input: inputResolution, @@ -455,7 +457,9 @@ function buildOriginalFileResolution (inputResolution: number) { hasAudio: true }) - if (resolutions.length === 0) return toEven(inputResolution) + if (resolutions.length === 0) { + return toEven(inputResolution) + } return Math.max(...resolutions) }