X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fhelpers%2Fffmpeg-utils.ts;h=7bfd5d44acce0b5160a377c2fa0438fa85810bc9;hb=dca0fe12ec2e47be51884c4eb05ebe6f358cb9de;hp=e0e408ea025436f2deab558977a8d2354b452954;hpb=7b81edc854902a536083298472bf92bb6726edcf;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/helpers/ffmpeg-utils.ts b/server/helpers/ffmpeg-utils.ts index e0e408ea0..7bfd5d44a 100644 --- a/server/helpers/ffmpeg-utils.ts +++ b/server/helpers/ffmpeg-utils.ts @@ -74,7 +74,7 @@ namespace audio { } } -function computeResolutionsToTranscode (videoFileHeight: number) { +function computeResolutionsToTranscode (videoFileResolution: number) { const resolutionsEnabled: number[] = [] const configResolutions = CONFIG.TRANSCODING.RESOLUTIONS @@ -90,7 +90,7 @@ function computeResolutionsToTranscode (videoFileHeight: number) { ] for (const resolution of resolutions) { - if (configResolutions[resolution + 'p'] === true && videoFileHeight > resolution) { + if (configResolutions[resolution + 'p'] === true && videoFileResolution > resolution) { resolutionsEnabled.push(resolution) } } @@ -125,7 +125,8 @@ async function getVideoStreamCodec (path: string) { baseProfile = baseProfileMatrix['High'] // Fallback } - const level = videoStream.level.toString(16) + let level = videoStream.level.toString(16) + if (level.length === 1) level = `0${level}` return `${videoCodec}.${baseProfile}${level}` } @@ -337,11 +338,29 @@ function getClosestFramerateStandard (fps: number, type: 'HD_STANDARD' | 'STANDA .sort((a, b) => fps % a - fps % b)[0] } +function convertWebPToJPG (path: string, destination: string): Promise { + return new Promise(async (res, rej) => { + try { + const command = ffmpeg(path).output(destination) + + command.on('error', (err, stdout, stderr) => { + logger.error('Error in ffmpeg webp convert process.', { stdout, stderr }) + return rej(err) + }) + .on('end', () => res()) + .run() + } catch (err) { + return rej(err) + } + }) +} + // --------------------------------------------------------------------------- export { getVideoStreamCodec, getAudioStreamCodec, + convertWebPToJPG, getVideoStreamSize, getVideoFileResolution, getMetadataFromFile, @@ -422,6 +441,7 @@ async function buildHLSCommand (command: ffmpeg.FfmpegCommand, options: HLSTrans const videoPath = getHLSVideoPath(options) if (options.copyCodecs) command = presetCopy(command) + else if (options.resolution === VideoResolution.H_NOVIDEO) command = presetOnlyAudio(command) else command = await buildx264Command(command, options) command = command.outputOption('-hls_time 4')