[Ffmpeg-devel] [BUG] Rate Control For MPEG CBR

Michael Niedermayer michaelni
Sat Oct 28 22:04:00 CEST 2006


Hi

On Sat, Oct 28, 2006 at 04:01:36AM -0500, Brian Brice wrote:
> Hello.
> 
> I have been testing ffmpeg's CBR capabilities for the purpose of
> producing HDV compatible MPEG 2 video.  The hardware I'm working
> with requires a constant bitrate of either 18.3 Mbps or 25 Mbps
> (2 different types of devices).  If there are sudden spikes in the
> bitrate then of course recording to the media, eg. mini-DV tape, doesn't
> work.
> 
> My test input into libavcodec is pretty much a series of frames with
> random noise in them (I'm trying to test somewhat worst case scenarios).
> Here's information about the streams (not listed is left to default):
> 
> Video
>   codec:        mpeg2video
>   bit_rate:     18300000
>   width:        1280
>   height:       720
>   aspect_ratio: 16:9
>   rate:         ntsc (30/1.001)
>   gop_size:     6
>   max_b_frames: 2
>   profile:      4 (MP)
>   level:        6 (HL 1440)
>   rc_min_rate:  18300000
>   rc_max_rate:  18300000
>   rc_buffer_size: 3670016 (448 KiB * 1024 * 8)
> 
> Audio:
>   codec:       mp2
>   bit_rate:    384000
>   sample_rate: 48000
>   channels:    2
> 
> Given that the input frames to the encoder are pretty much random noise,
> the outcoming frame sizes are absolute too huge for anything close to
> 18.3 Mbps CBR.  I kept track of the returned compressed frame sizes from
> avcodec_encode_video() and here is their results:
> 
> dts     type  size
> 0.4004   I    860038
> 0.5005   P    291016
> 0.533867 B    396652
> 0.567233 B    331925
> 0.6006   I    294090
> 0.633967 B    331273
> 0.667333 B    331603
> 0.7007   P    247944
> 0.734067 B    331157
> 0.767433 B    331345
> 0.8008   I    293541
> 0.834167 B    331235
> 0.867533 B    330850
> 0.9009   P    246918
> 0.934267 B    330333
> 0.967633 B    330848
> 1.001    I    292795
> ...
> 
> If you average this first second worth, it comes out to about 47 Mbps.
> For sample videos I've tested, the bitrate only goes up from there,
> averaging about 66 Mbps.
> 
> Obviously 66 Mbps isn't going to work with a device that needs
> 18.3 Mbps.  I believe this to be a bug.  Unless I've forgotten to set
> something else that should be requird for CBR (or close to), asking for
> 18.3 Mbps and getting back more than 3 times that is quite unexpected.
> 
> Please, comments, questions, suggestions!  Thank you guys.

try the following (see libavcodec/utils.c for how the variables are called
-mbd 2 -flags mv0+trell+cbp -lmax 340*QP2LAMBDA -sc_threshold 100000000 
-rc_buf_aggressivity 0.25

and use latest svn! it might not work with anything older then a few minutes

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

In the past you could go to a library and read, borrow or copy any book
Today you'd get arrested for mere telling someone where the library is




More information about the ffmpeg-devel mailing list