+
+ 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<string, boolean>
+async function checkFFmpegEncoders (): Promise<Map<string, boolean>> {
+ 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<string, boolean>()
+
+ for (const encoder of optionalEncoders) {
+ supportedOptionalEncoders.set(encoder,
+ encoders[encoder] !== undefined
+ )
+ }