[FFmpeg-user] 2 pass CBR or VBR not really fixing the bitrate?

Andy Furniss adf.lists at gmail.com
Mon Jul 31 22:02:54 EEST 2017


Manuel Tiglio wrote:
> 
>> On Jul 31, 2017, at 11:29 AM, Nicolas George <george at nsup.org>
>> wrote:
>> 
>> Le tridi 13 thermidor, an CCXXV, Manuel Tiglio a écrit :
>>> 1.23. For VOD content the peak bit rate SHOULD be no more than
>>> 200% of the average bit rate.
>> 
>> Without a proper definition of "peak bit rate", this sentence is 
>> meaningless.
> 
> Are you saying that Apple’s authoring requirements for HLS are
> meaningless?
> 
>> A bit rate is a quantity of information divided by a time. Since it
>> is discrete, there is no way of doing calculus, and therefore there
>> is no notion of instantaneous bit rate. Thus, without saying the 
>> period of time on which the bit rate is computed, it does not mean 
>> anything.
> 
> When doing streaming you typically send packets of 6-10 secs, so in
> that interval the peak (i.e. maximum value) bitrate does not have to
> exceed 10% (110% constrained VBR) or 100% (200% constrained VBR) of
> the average bitrate in that interval.
> 
> But the exact value of that length of time is irrelevant.
> 
> The fact that it is a discrete series is also irrelevant, you can
> compute discrete bitrates in the same way that you compute finite
> differences (for example).
> 
> This is really really standard for anyone working on streaming. What
> is not standard is that ffmpeg has such large fluctuations between
> the peak and average bitrate

You are encoding with libx264 not ffmpeg, it's just passing params.

What are you using to measure these "large fluctuations" and over what
timescale?

I see in the guide you linked that chunks are required to start with an
I frame - these for the same quality are usually far bigger than b or p
frames, so if you measure over small time there is bound to be a high
variation.

FWIW the player buffer size constraint AIUI is meant to absorb these
sort of things when fed at a constant/limited rate = it's not a
parameter that means the bitstream will at a small scale be constant
rate, it means the player using that buffer size at a certain "feed"
rate will not under/overflow when it meets short term fluctuations. If
you set it too small in some effort to make the encoder avoid these you
will likely end up with I frame pulsing.


More information about the ffmpeg-user mailing list