Ticket #491 (closed defect: fixed)

Opened 20 months ago

Last modified 20 months ago

ffmpeg's -b option (bitrate) overrides audio bitrate

Reported by: jbm Owned by: michael
Priority: normal Component: FFmpeg
Version: git-master Keywords:
Cc: Blocked By:
Blocking: Reproduced by developer: yes
Analyzed by developer: no

Description

Using today's git (I don't know when that issue appeared), the "-b" bitrate option in FFmpeg sets both video AND audio bitrate.

The FFmpeg documentation says:

  • To set the video bitrate of the output file to 64kbit/s:

ffmpeg -i input.avi -b 64k output.avi

However, in current git, trying for example:

ffmpeg -i sample.MTS -b 2000k test.mpg

Fails with the following error:
[mp2 @ 0x80cbb20] bitrate 2000 is not allowed in mp2

Trying:
ffmpeg -i sample.MTS -ab 128k -b 2000k test.mpg

Also fails because '-b' overrides '-ab', so the only solution is to do:

ffmpeg -i sample.MTS -b 2000k -ab 128k test.mpg

This seems a bug to me, it was not working that way before, and it breaks the encoding profiles that we use in our application (Kdenlive). If this change was made on purpose, the documentation should be updated.

Change History

comment:1 Changed 20 months ago by cehoyos

Complete, uncut output missing.

comment:2 Changed 20 months ago by jbm

Sorry, here is the complete output:

ffmpeg -i 00006.MTS -b 2000k test.mpg
ffmpeg version N-32732-g7491816, Copyright (c) 2000-2011 the FFmpeg developers

built on Sep 20 2011 12:11:56 with gcc 4.6.1
configuration: --prefix=/usr --enable-shared --enable-libmp3lame --enable-gpl --enable-libfaac --enable-libvorbis --enable-pthreads --enable-libfaac --enable-libxvid --enable-x11grab --enable-libgsm --enable-libx264 --enable-libtheora --enable-libdc1394 --enable-nonfree --disable-stripping --enable-avfilter --enable-libschroedinger --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3
libavutil 51. 16. 1 / 51. 16. 1
libavcodec 53. 16. 0 / 53. 16. 0
libavformat 53. 12. 0 / 53. 12. 0
libavdevice 53. 4. 0 / 53. 4. 0
libavfilter 2. 43. 2 / 2. 43. 2
libswscale 2. 1. 0 / 2. 1. 0
libpostproc 51. 2. 0 / 51. 2. 0

[mpegts @ 0x99beac0] parser not found for codec hdmv_pgs_subtitle, packets or times may be invalid.

Seems stream 0 codec frame rate differs from container frame rate: 50.00 (50/1) -> 50.00 (50/1)
Input #0, mpegts, from '00006.MTS':

Duration: 00:00:34.15, start: 0.701789, bitrate: 15782 kb/s
Program 1

Stream #0.0[0x1011]: Video: h264 (High) (HDMV / 0x564D4448), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 50 fps, 50 tbr, 90k tbn, 50 tbc
Stream #0.1[0x1100]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, stereo, s16, 192 kb/s
Stream #0.2[0x1200]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)

[buffer @ 0x99c61e0] w:1920 h:1080 pixfmt:yuv420p tb:1/1000000 sar:1/1 sws_param:
[mp2 @ 0x99c65a0] bitrate 2000 is not allowed in mp2
Output #0, mpeg, to 'test.mpg':

Stream #0.0: Video: mpeg1video, yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 2000 kb/s, 90k tbn, 50 tbc
Stream #0.1: Audio: mp2, 48000 Hz, stereo, s16, 2000 kb/s

Stream mapping:

Stream #0.0 -> #0.0 (h264 -> mpeg1video)
Stream #0.1 -> #0.1 (ac3 -> mp2)

Error while opening encoder for output stream #0.1 - maybe incorrect parameters such as bit_rate, rate, width or height

comment:3 Changed 20 months ago by cehoyos

  • Status changed from new to open
  • Version changed from unspecified to git-master
  • Reproduced by developer set

The correct option in this case is -vb (which works with older versions).

comment:4 Changed 20 months ago by cehoyos

  • Status changed from open to closed
  • Resolution set to fixed

Should be fixed, please reopen if not.

Note: See TracTickets for help on using tickets.