* * https://trac.ffmpeg.org/wiki/Limiting%20the%20output%20bitrate
*/
-const defaultX264VODOptionsBuilder: EncoderOptionsBuilder = async (options: EncoderOptionsBuilderParams) => {
+const defaultX264VODOptionsBuilder: EncoderOptionsBuilder = (options: EncoderOptionsBuilderParams) => {
const { fps, inputRatio, inputBitrate } = options
if (!fps) return { outputOptions: [ ] }
}
}
-const defaultX264LiveOptionsBuilder: EncoderOptionsBuilder = async (options: EncoderOptionsBuilderParams) => {
+const defaultX264LiveOptionsBuilder: EncoderOptionsBuilder = (options: EncoderOptionsBuilderParams) => {
const { streamNum, fps, inputBitrate, inputRatio } = options
const targetBitrate = capBitrate(inputBitrate, getAverageBitrate({ ...options, fps, ratio: inputRatio }))
logger.debug('Calculating audio bitrate of %s by AAC encoder.', input, { bitrate: parsedAudio.bitrate, audioCodecName })
- if (bitrate !== undefined && bitrate !== -1) {
+ if (bitrate !== -1) {
return { outputOptions: [ buildStreamSuffix('-b:a', streamNum), bitrate + 'k' ] }
}
function capBitrate (inputBitrate: number, targetBitrate: number) {
if (!inputBitrate) return targetBitrate
- return Math.min(targetBitrate, inputBitrate)
+ // Add 30% margin to input bitrate
+ const inputBitrateWithMargin = inputBitrate + (inputBitrate * 0.3)
+
+ return Math.min(targetBitrate, inputBitrateWithMargin)
}