X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fhelpers%2Fffmpeg%2Fffprobe-utils.ts;h=9746c2046e815a84f8909a63cac982e40f24555a;hb=6c38f40d966eb25e53ac38174153cb1fef0475f5;hp=7bcd27665829756d5b8b4706ff09c97573b20445;hpb=84cae54e7a2595bea0c3ea106a4d111fd11a4ec6;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/helpers/ffmpeg/ffprobe-utils.ts b/server/helpers/ffmpeg/ffprobe-utils.ts index 7bcd27665..9746c2046 100644 --- a/server/helpers/ffmpeg/ffprobe-utils.ts +++ b/server/helpers/ffmpeg/ffprobe-utils.ts @@ -91,11 +91,12 @@ async function getAudioStreamCodec (path: string, existingProbe?: FfprobeData) { // --------------------------------------------------------------------------- function computeResolutionsToTranscode (options: { - inputResolution: number + input: number type: 'vod' | 'live' - includeInputResolution: boolean + includeInput: boolean + strictLower: boolean }) { - const { inputResolution, type, includeInputResolution } = options + const { input, type, includeInput, strictLower } = options const configResolutions = type === 'vod' ? CONFIG.TRANSCODING.RESOLUTIONS @@ -117,13 +118,18 @@ function computeResolutionsToTranscode (options: { ] for (const resolution of availableResolutions) { - if (configResolutions[resolution + 'p'] === true && inputResolution > resolution) { - resolutionsEnabled.add(resolution) - } + // Resolution not enabled + if (configResolutions[resolution + 'p'] !== true) continue + // Too big resolution for input file + if (input < resolution) continue + // We only want lower resolutions than input file + if (strictLower && input === resolution) continue + + resolutionsEnabled.add(resolution) } - if (includeInputResolution) { - resolutionsEnabled.add(inputResolution) + if (includeInput) { + resolutionsEnabled.add(input) } return Array.from(resolutionsEnabled) @@ -157,7 +163,7 @@ async function canDoQuickAudioTranscode (path: string, probe?: FfprobeData): Pro const channelLayout = parsedAudio.audioStream['channel_layout'] // Causes playback issues with Chrome - if (!channelLayout || channelLayout === 'unknown') return false + if (!channelLayout || channelLayout === 'unknown' || channelLayout === 'quad') return false return true }