[FFmpeg-user] -b:a doesn't give me desired output bitrate

Moritz Barsnick barsnick at gmx.net
Wed Jul 5 10:52:21 EEST 2017

On Wed, Jul 05, 2017 at 07:11:34 +0530, Shriramana Sharma wrote:
> On my first try without specifying output bitrate I found that the MP3
> file is far too big (10 MB) than the sum of the input OPUS files (1
> and 2 MBs). Then I figured it was because of the output bit rate not
> being set.

It is being set, but according to lame/libmp3lame's documentation, the
lowest constant bitrate it can encode at 48 kHz sample rate is 32

That's why your "-b:a 18k" results in 32 kbits/s:

> Input #0, mp3, from 'output.mp3':
>   Metadata:
>     encoder         : Lavf57.71.100
>   Duration: 00:22:41.64, start: 0.023021, bitrate: 32 kb/s
>     Stream #0:0: Audio: mp3, 48000 Hz, mono, s16p, 32 kb/s

Either MP3 isn't really suitable for such very low bitrates, or you
need to find a different encoder. ffmpeg only supports libshine next to
libmp3lame, but since libshine doesn't have a psychoacoustic model, I
doubt you'll get anything worth listening to out of 18 kbits/s.

I believe MP3 just isn't suitable. Opus is basically quite efficient.
MP3 can't match that. If you need those recordings in MP3, they'll be
larger. If it's an option, you may want to try the codec HE-AAC v2
instead. (You'll need libfdk_aac to encode to that variant, I believe.)
I understand that codec is also great with low bitrates (and I have
heard quite "good" sounding music in 48 kbits/s stereo.)


More information about the ffmpeg-user mailing list