From 5fb7cfbac50e2c55f04182e40bc6f84e5dd4a4da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20Le=20Calvar?= Date: Sat, 3 Apr 2021 18:48:14 +0200 Subject: add support for inputOptions in trancode plugins --- server/helpers/ffmpeg-utils.ts | 3 +++ server/lib/video-transcoding-profiles.ts | 12 +++++++----- 2 files changed, 10 insertions(+), 5 deletions(-) (limited to 'server') diff --git a/server/helpers/ffmpeg-utils.ts b/server/helpers/ffmpeg-utils.ts index 01c3aa5f7..32bd3e44a 100644 --- a/server/helpers/ffmpeg-utils.ts +++ b/server/helpers/ffmpeg-utils.ts @@ -277,6 +277,7 @@ async function getLiveTranscodingCommand (options: { logger.debug('Apply ffmpeg live video params from %s using %s profile.', builderResult.encoder, profile, builderResult) command.outputOption(`${buildStreamSuffix('-c:v', i)} ${builderResult.encoder}`) + command.addInputOptions(builderResult.result.inputOptions) command.addOutputOptions(builderResult.result.outputOptions) } @@ -294,6 +295,7 @@ async function getLiveTranscodingCommand (options: { logger.debug('Apply ffmpeg live audio params from %s using %s profile.', builderResult.encoder, profile, builderResult) command.outputOption(`${buildStreamSuffix('-c:a', i)} ${builderResult.encoder}`) + command.addInputOptions(builderResult.result.inputOptions) command.addOutputOptions(builderResult.result.outputOptions) } @@ -605,6 +607,7 @@ async function presetVideo ( localCommand.audioCodec(builderResult.encoder) } + command.addInputOptions(builderResult.result.inputOptions) command.addOutputOptions(builderResult.result.outputOptions) addDefaultEncoderParams({ command: localCommand, encoder: builderResult.encoder, fps }) } diff --git a/server/lib/video-transcoding-profiles.ts b/server/lib/video-transcoding-profiles.ts index b7f9178c4..d802e2c9d 100644 --- a/server/lib/video-transcoding-profiles.ts +++ b/server/lib/video-transcoding-profiles.ts @@ -24,9 +24,10 @@ import { VIDEO_TRANSCODING_FPS } from '../initializers/constants' const defaultX264VODOptionsBuilder: EncoderOptionsBuilder = async ({ input, resolution, fps }) => { const targetBitrate = await buildTargetBitrate({ input, resolution, fps }) - if (!targetBitrate) return { outputOptions: [ ] } + if (!targetBitrate) return { inputOptions: [ ], outputOptions: [ ] } return { + inputOptions: [ ], outputOptions: [ `-preset veryfast`, `-r ${fps}`, @@ -40,6 +41,7 @@ const defaultX264LiveOptionsBuilder: EncoderOptionsBuilder = async ({ resolution const targetBitrate = getTargetBitrate(resolution, fps, VIDEO_TRANSCODING_FPS) return { + inputOptions: [ ], outputOptions: [ `-preset veryfast`, `${buildStreamSuffix('-r:v', streamNum)} ${fps}`, @@ -55,7 +57,7 @@ const defaultAACOptionsBuilder: EncoderOptionsBuilder = async ({ input, streamNu if (await canDoQuickAudioTranscode(input, probe)) { logger.debug('Copy audio stream %s by AAC encoder.', input) - return { copy: true, outputOptions: [] } + return { copy: true, inputOptions: [ ], outputOptions: [ ] } } const parsedAudio = await getAudioStream(input, probe) @@ -70,14 +72,14 @@ const defaultAACOptionsBuilder: EncoderOptionsBuilder = async ({ input, streamNu logger.debug('Calculating audio bitrate of %s by AAC encoder.', input, { bitrate: parsedAudio.bitrate, audioCodecName }) if (bitrate !== undefined && bitrate !== -1) { - return { outputOptions: [ buildStreamSuffix('-b:a', streamNum), bitrate + 'k' ] } + return { inputOptions: [ ], outputOptions: [ buildStreamSuffix('-b:a', streamNum), bitrate + 'k' ] } } - return { outputOptions: [ ] } + return { inputOptions: [ ], outputOptions: [ ] } } const defaultLibFDKAACVODOptionsBuilder: EncoderOptionsBuilder = ({ streamNum }) => { - return { outputOptions: [ buildStreamSuffix('-q:a', streamNum), '5' ] } + return { inputOptions: [ ], outputOptions: [ buildStreamSuffix('-q:a', streamNum), '5' ] } } // Used to get and update available encoders -- cgit v1.2.3