From 4176e227cb18c40e13f30f4634d128cc3169e9d4 Mon Sep 17 00:00:00 2001 From: Rigel Kent Date: Mon, 21 May 2018 13:14:29 +0200 Subject: Fixing #626 with ffmpeg's low default audio bitrate --- server/initializers/checker.ts | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) (limited to 'server/initializers/checker.ts') diff --git a/server/initializers/checker.ts b/server/initializers/checker.ts index 270cbf649..f1c2e80a9 100644 --- a/server/initializers/checker.ts +++ b/server/initializers/checker.ts @@ -84,11 +84,11 @@ function checkMissedConfig () { async function checkFFmpeg (CONFIG: { TRANSCODING: { ENABLED: boolean } }) { const Ffmpeg = require('fluent-ffmpeg') const getAvailableCodecsPromise = promisify0(Ffmpeg.getAvailableCodecs) - const codecs = await getAvailableCodecsPromise() + const canEncode = [ 'libx264' ] + if (CONFIG.TRANSCODING.ENABLED === false) return undefined - const canEncode = [ 'libx264' ] for (const codec of canEncode) { if (codecs[codec] === undefined) { throw new Error('Unknown codec ' + codec + ' in FFmpeg.') @@ -98,6 +98,29 @@ async function checkFFmpeg (CONFIG: { TRANSCODING: { ENABLED: boolean } }) { throw new Error('Unavailable encode codec ' + codec + ' in FFmpeg') } } + + checkFFmpegEncoders() +} + +// Optional encoders, if present, can be used to improve transcoding +// Here we ask ffmpeg if it detects their presence on the system, so that we can later use them +let supportedOptionalEncoders: Map +async function checkFFmpegEncoders (): Promise> { + if (supportedOptionalEncoders !== undefined) { + return supportedOptionalEncoders + } + + const Ffmpeg = require('fluent-ffmpeg') + const getAvailableEncodersPromise = promisify0(Ffmpeg.getAvailableEncoders) + const encoders = await getAvailableEncodersPromise() + const optionalEncoders = [ 'libfdk_aac' ] + supportedOptionalEncoders = new Map() + + for (const encoder of optionalEncoders) { + supportedOptionalEncoders.set(encoder, + encoders[encoder] !== undefined + ) + } } // We get db by param to not import it in this file (import orders) @@ -126,6 +149,7 @@ async function applicationExist () { export { checkConfig, checkFFmpeg, + checkFFmpegEncoders, checkMissedConfig, clientsExist, usersExist, -- cgit v1.2.3