In the early days of video on the Internet, encoding video for streaming was quite simple: You created a 320×240 video file encoded at 500 Kilobits per second, and that would fit on anyone’s computer screen, and into anyone’s first-generation DSL connection. But in today’s multi-screen world, your video needs to reach a multitude of devices, with various screen resolutions and a variety of connection speeds.  

The aspect of connection speeds is especially tricky, since due to the nature of the Internet, the bandwidth of the “pipe” from your video server to the user’s client device, through all the networks, switches, ISPs, modems and routers along the way, constantly changes. These changes happen as the bits travel over the Internet to the user’s home, and also inside the home on WiFi networks, as the wireless signal changes its path to find the best route to the user’s device.

Although the instantaneous bandwidth on the client side changes, the aim of video content providers is to enable a smooth and continuous user experience. Nobody likes the video they’re watching to pause for re-buffering, an experience that doesn’t happen in regular broadcast TV.  In these cases users will quickly abandon the service, as Conviva pointed out in a recent user experience report.

The method of Adaptive Bitrate Streaming (ABR) was developed to address this issue, and provide a smooth video streaming experience even when the user’s bandwidth constantly changes. In ABR streaming, the video content provider encodes each video title to a set of resolutions and bitrates. Each of the video streams in this set is typically called a “layer”, and the whole set is called an “ABR Recipe”. As the player streams the video, it measures the instantaneous bandwidth of the device it is running on, and based on this measurement it determines whether to continue streaming the same layer, or request a layer with a higher bitrate or lower bitrate from the server. This ensures that the player always plays a layer that has the “right” bitrate for the user’s current bandwidth: not too low to ensure high quality video, and not too high to ensure that video will not pause and buffer due to exceeding the available bandwidth.

While ABR streaming is widely used across all streaming protocols such as HLS and MPEG-DASH, one question still remains: how do you determine the best ABR Recipe for your content? For many years, the “Golden Standard” for ABR recipes was Apple’s Technical Note T2224, originally published in 2010. But today, it is obvious that the set of bitrates and resolutions specified in this document are an overkill for current video encoders on one hand, while failing to satisfy the bandwidth requirements of prime-time streaming on the other hand. For example, Apple recommend using 8.5 Mbps for 1080p video and 6.5 Mbps for 720p video.  Another option is to look at what other over-the-top streaming services are doing and copy their recipes – if the content is similar, and the target user base is similar, this might be a good idea, as there are no copyrights on encoding parameters as far as I know.

But there is one thing in common to all ABR recipes used today across the industry: They are fixed. The same bitrates and resolutions are being used across the whole content repository, for each and every title. For example, if your 720p layer is 3 Megabits per second, all of your movie titles, regardless of their content, would be encoded at this bitrate. But the reality is that some titles “need” more bits for encoding, while others need less – this is related to the nature of video encoding. For example, a 720p animated movie that has smooth surfaces and textures, and relatively little content, can be encoded at 1.5 Mbps and will retain the same quality of the 3 Mbps encode, since the additional bits do not contribute to added quality.

On the other hand, action movies with a lot of rapid scene changes, high motion and special effects will require the full 3 Mbps at 720p to reach the same quality. Therefore, when you encode all of your titles at the same bitrates, you are actually “wasting” bits on titles that don’t need them. Why do you care? For two reasons: first, because you pay for those bits, and if you didn’t stream them, you would reduce your CDN costs. And second, your users can enjoy a better user experience with a faster stream start and less re-buffering events if the bitrate you stream to them for a particular ABR layer is lower.

So now the question that remains is: how do you determine the right bitrate for encoding each one of your titles? This is exactly the concept of content-adaptive encoding, which has received a lot of buzz lately due to Netflix’s announcement that they are re-encoding their entire content repository with different bitrates for each title. So if you have deep pockets like Netflix or Amazon, we recommend that you do the same: Partner with a few universities and research institutions, develop your own quality measure, perform dozens of test encodes on each title to determine the best recipe for that title, and then encode at optimal bitrate. Actually, if you have such a budget, you can just hire a few thousands employees on Amazon Mechanical Turk, and ask them to judge the quality of your movies at various bitrates to determine the optimal one.

If your budget is more limited, we have a much better solution for you:  Encode your videos to your regular ABR recipes, and run them through the Beamr Video optimizer before packaging them for streaming.

The result: Your video will be optimized so that their bitrate exactly fits their content, and is reduced as much as possible.  In fact, since the Beamr optimization works at the frame level and not at the title level, we will also be able to reduce the bitrate of action movies, since the full bitrate will be utilized only in the actual action scenes, while in non-action scenes the bitrate will be lowered.  So on average, Beamr Video can reduce the bitrate of actions movies by 25% without compromising their perceptual quality, and other content types can be even further reduced.

In summary, ABR is good – but optimized ABR is even better.  It provides content-adaptive encodes for all of your titles, enabling you to save costs and deliver a better experience to your end users.