Does playback of VBR streams generated by CAE deliver high QoE? Yes.
Pratima Ashok Dhuldhule (Senior Engineer, Advanced Video) & Darshan Datt K. S. (Manager, Advanced Video)
Have you ever wondered if VBR streams resulting from CAE negatively impact QoE, in comparison with CBR stream playback? Read on to quash those thoughts. By using the right representation or manifest file, you can deliver the best QoE, thus motivating viewers to keep coming back for more content.
Adaptive Bitrate (ABR) streaming has become ubiquitous in video streaming industry owing to the benefits it offers such as reduced buffering, quick start time and good QoE for both high-end and low-end internet connections
While ABR streaming does pose some challenges, users and developers can overcome these by leveraging Content Adaptive Encoding (CAE). CAE allocates the required bits to video based on content complexity, thus achieving the best trade-off between ‘encode-quality’ and ‘bitrate/bandwidth/storage-space’.
Read our previous blog, for more insights on Content Adaptive Encoding (CAE).
CAE solutions typically result in Variable Bitrate (VBR) streams, in contrast to traditional DVB compliant broadcast encoders that generate Constant Bitrate (CBR) streams. Now, one of the top concerns that has emerged is with regard to the Quality of Experience (QoE) of VBR stream playback as against CBR stream playback.
QoE in the case of ABR playback depends not only on the best encode-quality but also on fewer number of switches between ABR representations during playback.
There is a perception in the industry that VBR streams produced by CAE introduce higher number of representation-switches due to bitrate variation, thereby reducing the playback QoE.
In this blog, we clear this perception by showing you how VBR streams result in similar or better switching than traditional CBR streams ‘by using an appropriate representation or manifest file’.
We compared the following design choices by studying the number of representation-switches made when playing streams through widely used players (such as VideoJS and DashJS).
ABR | Resolution | Peak Bitrate (kbps) |
Average Bitrate (kbps) |
ABR1 | 1920×1080 | 4000 | 2900 |
ABR2 | 1920×1080 | 3000 | 2100 |
ABR3 | 1280×720 | 2000 | 1300 |
ABR4 | 1280×720 | 1000 | 700 |
Table 1: ABR representations used for validation
Figure 1 represents the segment level bitrates for CBR and VBR streams.
Figure 1: Bitrate Representation for VBR and CBR Streams
Observations with DashJS player
Note: The ABR strategy of DashJS player was set to default Dynamic strategy. (This switches between Bola and Throughput strategy to leverage the strengths of both. Read about these strategies here.)
Figure 2 provides the actual representations chosen by the DashJS player.
Figure 2: VBR vs. CBR Streams on DashJS Player
DashJS uses 1000kbps as initial bandwidth and hence downloaded ABR4 as the first segment for both VBR and CBR streams. The number of switches remained the same for both streams during the entire playback.
Observations with VideoJS player
Figure 3 provides the actual representations chosen by the VideoJS player
Figure 3: VBR vs. CBR Streams on VideoJS Player
The first bitrate resolution chosen by VideoJS player is always with respect to assumed initial 4Mbps bandwidth. Therefore, the player started with ABR2 and switched to ABR4 in both VBR and CBR streams. Though the number of representation switches remained the same, it is worthwhile to note that in case of CBR, the player continued to play ABR4 stream for a longer duration before settling at ABR3. However
with VBR, the player quickly switched to ABR3.
Observations with Safari browser
Figure 4: VBR vs. CBR Streams on Safari Player
The Safari player always chooses the first representation from the ABR list in the manifest file for initial segment download. We kept the ABR2 stream as the first representation in the HLS manifest file.
While both the streams started with ABR2, the CBR stream quickly switched to ABR3 as the player found this the safe representation considering available bandwidth and buffer level. As for VBR stream, player continued with ABR2 due to optimal buffer levels resulting from low bitrate of first few segments – a behavior expected from players which continuously download segments without waiting for the buffer level to reduce.
Observations with DashJS player
Figure 5 provides the actual representations chosen by the DashJS player.
Figure 5: Peak vs. Average Bitrate in Manifest on DashJS
DashJS player considers throughput as well as buffer level to choose a bitrate representation.
The number of representation-switches for both cases remained the same. The player also chose higher quality representation for average bitrate represented VBR stream based on the represented bitrate.
Observations with VideoJS player
Figure 6 provides the actual representations chosen by the VideoJS player.
Figure 6: Peak vs. Average Bitrate in Manifest on VideoJS
There were higher representation-switches for average bitrate represented stream.
For peak bitrate represented streams, the segment bitrate can never cross the peak bitrate. Therefore, the player can smoothly play the ABR steam with lesser representation-switches.
Observations with Safari player
Figure 7 provides the actual representations chosen by the Safari player.
Figure 7: Peak vs. Average Bitrate in Manifest on Safari
The Safari player behavior was similar to VideoJS player. The number of representation-switches for average bitrate represented stream was much higher than that of peak bitrate represented stream.
As mentioned earlier, for peak bitrate represented streams, the segment bitrate can never cross the peak bitrate. The player can therefore smoothly play the ABR steam with lesser representation-switches.
Our experiments clearly show that with the most popular ABR players, peak bitrate represented VBR streams provide similar QoE as traditional CBR streams or even better in some cases.
This is a definite proof that we can confidently leverage CAE solutions such as Ittiam’s THINKode to deliver the best ‘QoE’, even as we achieve the best trade-off between encode-quality and bitrate/bandwidth/storage-space.