
Now, let’s dive into the different modes. Knowing the scenario helps you choose a rate control mode. You want to ensure that the file ends up having a certain size.

High spatial details and complex textures are also hard to encode. What is hard and easy in terms of compression? Lots of motion in a video for example require more bits to encode, since the differences between adjacent video frames will be larger. Simply put, VBR lets the encoder use more bits for “stuff that is hard to encode” and save bits for the parts of the file that are easy to compress. Variable bitrate ensured that you’d achieve the lowest possible file size at the highest possible quality under the given constraints (as set by the VBR quality level). To rip our CDs, we had been using Constant Bitrate (CBR) encoding for a while, when later, Variable Bitrate (VBR) encoding came along. Many people are more familiar with rate control in audio encoders, especially those who-like me-grew up with MP3s. Note that this is not about the nitty-gritty details of Rate-Distortion Optimization.

This post is a brief guide on the different modes it explains when you’d use which, as an end user. Why should you care? Often enough, you see examples of video encoding commands that apply the wrong kind of rate control mode or wrong bitrates. Rate control comes in many forms-you’ll recognize the terms “1-pass” and “2-pass”, “CBR” and “VBR”, maybe you know about “VBV Encoding” or “CRF”. Rate control is a crucial step in determining that tradeoff between size and quality.

The goal of (lossy) video encoding is to save as many bits as possible, reducing the file size over the original input file, while retaining as much quality as possible.

What is “rate control”? It’s what a video encoder does when it decides how many bits to spend for a given frame.
