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.
ABR, CAE and VBR
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
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.
The Playback QoE Debate
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’.
Ittiam Experiments with Popular Players
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).
- VBR encoding vs CBR encoding
- Target bitrate represented VBR streams vs peak bitrate represented VBR streams
Common setup details
- Chunk duration: 10 seconds.
- ABR representation: Captured in Table 1.
Table 1: ABR representations used for validation
- Tool used for bitrate throttling: Chrome’s “inspect element” or Charles Debugging Proxy for Safari
- Encoder used for encoding streams: x264
- Encoding modes: CBR and VBR (in addition to the encoder, THINKode – Ittiam’s ML based CAE solution was used for generating VBR streams )
- Container formats: HLS and DASH
Figure 1 represents the segment level bitrates for CBR and VBR streams.
Figure 1: Bitrate Representation for VBR and CBR Streams
Experiment 1: Peak bitrate represented VBR vs 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.)
- Number of representation switches observed for VBR stream: 1
- Number of representation switches for CBR stream: 1
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
- Number of representation switches for VBR: 2
- Number of representation switches for CBR: 2
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
- Number of representation switches for VBR: 0
- Number of representation switches for CBR: 1
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.
Experiment: Peak bitrate represented VBR vs average bitrate represented VBR
Observations with DashJS player
- Number of representation switches observed for peak bitrate: 1
- Number of representation switches observed for average bitrate: 1
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
- Number of representation switches observed for peak bitrate: 2
- Number of representation switches observed for average bitrate: 3
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
- Number of representation switches observed for peak bitrate: 0
- Number of representation switches observed for average bitrate: 4
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.