[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