Quote:
Originally Posted by Comatose
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
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...