Higher quality video streams and improving adaptive bitrate reliability

Published: 21 June 2021
  • Chris Bass

    Chris Bass

    Senior R&D Engineer

With millions of people watching TV over the internet using services like BBC iPlayer, you might assume that internet video streaming is now a solved problem. For many, it may seem so. But not everyone gets a perfect experience.

In BBC Research & Development, we've been asking ourselves whether internet streaming gives a quality of experience comparable with broadcast, and if not, what we can do to close the gap and then go beyond.

In the first of an occasional series of posts on internet media streaming, we're going to look at the effect that adding higher quality video to some of our internet streams can have on the experience of viewers. Below we explain how this unexpectedly led to a discovery that allows us to add higher quality video and improve the reliability of our streams.

The BBC aims to give the audiences of our internet-streamed programmes a good perceptual experience – ideally the best listening and viewing experience they can get within the limits of their available internet bandwidth. The so-called adaptive bitrate streaming formats – such as MPEG DASH and HLS – that we use to send much of our content over the internet help us to do just that by offering players a set of different video qualities for each programme, from low resolution and frame rate (needing only a small amount of internet bandwidth to deliver) to high resolution and frame rate (requiring more bandwidth to deliver). A player streaming a programme can dynamically switch between these video qualities as it plays to give the best experience its internet connection at the time will allow.

One of the benefits of using these adaptive bitrate formats is that, as faster internet speeds become more widely available, we can extend the set of video quality levels made available to players of our programmes to include higher-quality video. Doing this would mean that those with fast internet connections and suitable equipment to decode and display the new level would be able to enjoy an improved viewing experience.

But, of course, not everyone's connection to the internet is equally fast and reliable! And not everyone has the equipment needed to watch higher resolutions and frame rates.

Whilst introducing a higher-quality video level or "representation" to our programme streams would clearly be expected to give a better quality of experience for those with fast internet connections (and suitable decode/display equipment), what about those whose internet connections are only intermittently fast enough to stream the new higher-quality video? Would players be smart enough in their switching decisions to make use of the new video representation when available bandwidth is good, without running out of data and stalling when bandwidth drops? And what about those with relatively slow internet connections – those who would never have enough bandwidth to deliver the new higher-quality video? You might assume that adding a new representation wouldn't make any difference to their quality of experience, as they would never be able to access it. But is that a safe assumption?

At BBC R&D, we investigated these questions using a DASH player testbed that we've developed (of which more in an upcoming post), which allows us to accurately measure the performance of DASH players streaming content under controlled and repeatable network conditions.

We measured the performance of a player built on top of the dash.js library (as used in versions of iPlayer that run in a web browser) while playing a stream with a set of video qualities that ranged up to a 720p50 HD representation. We then compared that with the performance of the same player playing the same stream, but this time with the addition of a 1080p50 full HD representation. We did this while applying several different network bandwidth profiles representing a range of internet conditions faced by BBC viewers, from fast and stable through to slow and variable.

As you might expect, internet connections with ample bandwidth showed an increase in overall quality of experience when that 1080p50 video was available: they were able to enjoy full HD video without any stalling.

However, in situations where the internet connection only intermittently had enough bandwidth to stream the 1080p50 video, we found that the overall experience could be worse when the 1080p50 representation was available than when it wasn't. Players were able to show the high-quality 1080p50 video some of the time, but that came at the expense of a greater amount of stalling (as shown in Figure 1 below) – which tends to outweigh the benefits of occasionally better video quality.

Figure 1: Increase in time spent stalled after adding a 1080p50 representation

The most unexpected result, however, was the impact on quality of adding a 1080p50 representation when internet bandwidth was never high enough to let the player choose that representation. As noted above, you would assume that the presence or absence of 1080p50 video in this case wouldn't have any effect. But, in fact, it did: the mere presence of 1080p50 video in the set of available representations resulted in worse quality of experience than when it wasn't available – despite the player never actually selecting the 1080p50 representation, even for a moment. In this case, the reduction in overall quality wasn't down to increased stalling (that didn't really change); it was a result of lower average video bitrate. In other words, the player was making worse switching decisions than when there was no 1080p50 representation available – it wasn't maximising the video quality it could deliver to the viewer (see Figure 2 below). Curiouser and curiouser!

Figure 2: Reduction in average video bitrate after adding a 1080p50 representation

Some further investigations into the dash.js code revealed the reason for this. It turns out that dash.js will, by default, buffer further into the future when the highest quality video representation is selected than when any other video representation is chosen. Introducing a 1080p50 representation meant that what used to be the highest quality video representation (the 720p50 one) was no longer the highest. Therefore, in periods when internet bandwidth was sufficient only for 720p50 to be streamed, the player would be buffering less far into the future than it would when no 1080p50 representation was available. This meant less safety margin for dealing with network fluctuations. Under some network conditions, this led to more stalling; in others, it led to the player making worse decisions when switching between available representations, and hence to a lower average video quality; sometimes it led to both of these!

Fortunately, dash.js has a parameter that allows us to change its default behaviour and increase the amount of media it buffers into the future for video qualities below the highest. So we ran a further set of simulations on our testbed to identify an optimal value for this parameter – a value that would allow a 1080p50 representation to be added without negative effects for people who don't have a consistently fast connection.

We also determined that, for those with less consistent internet speeds, our proposed parameter change would also improve the reliability of streams for which 720p50 is the highest quality. After verifying that with an A/B test on iPlayer itself, the parameter change was rolled out to all users of iPlayer in a web browser. (Paragraph updated July 2021 to clarify what was rolled out to iPlayer users.)

All in all, this work shows that internet streaming is complex, and there remains plenty to investigate and optimise as we work towards making television delivered over the internet as robust and reliable as traditional broadcast television. In the next post in this series, we'll take a closer look at the testbed we're using to help us reach that goal.

Rebuild Page

The page will automatically reload. You may need to reload again if the build takes longer than expected.

Useful links

Demo mode

Hides preview environment warning banner on preview pages.

Theme toggler

Select a theme and theme mode and click "Load theme" to load in your theme combination.

Theme:
Theme Mode: