View Single Post
Old 1st June 2009, 15:30   #4  |  Link
LoRd_MuldeR
Software Developer
 
LoRd_MuldeR's Avatar
 
Join Date: Jun 2005
Location: Last House on Slunk Street
Posts: 13,248
Quote:
Originally Posted by Comatose View Post
So, --vbv-bufsize = [available bandwidth]. If I want to limit the bandwidth to allow streaming, the values of bufsize and maxrate should be the same, right?
Uhm, no.

For example: If you have a low bandwidth, but a big buffer, you can use a video bitrate that is even lower than the available bandwidth, so the buffer will accumulate more and more data. Then after that period of "low bitrate", your video can have a bitrate spike (for a short moment) and use a bitrate much higher than the bandwidth! That's possible because we have enough data in the buffer, right before the spike. Of course we still must make sure that the buffer will never run out of data (underflow) or exceed its capacity (overflow). And that's what VBV does! So the bigger the buffer, the better for VBV, because it can allow stronger video bitrate fluctuations (which results in better quality). Anyway, the maximum bitrate fluctuation (peak bitrate) is still limited by the Maxrate parameter...

Quote:
Originally Posted by Comatose View Post
I still don't understand completely, mainly because you say that "VBV takes care of all this", but don't explain how.
Very basically, VBV keeps track of the buffer filling level. If the buffer is in danger to run out of data, then VBV forces the encoder to lower the bitrate, even if that may cause visible artifacts. This also happens in the other direction: If the buffer is in danger to overflow, VBV forces the encoder to use an even higher bitrate. In reality VBV is more complex, of course...
__________________
Go to https://standforukraine.com/ to find legitimate Ukrainian Charities 🇺🇦✊

Last edited by LoRd_MuldeR; 1st June 2009 at 15:43.
LoRd_MuldeR is offline   Reply With Quote