w number I will continually point to. The issue was,
how much could I drop the delivery data rate
and continue to equal or exceed those numbers?
In the Netflix Mobile blog post, the company
achieved its bitrate savings three general ways:
1) using VP9, 2) optimizing the encoding settings
for H.264 and VP9, and 3) segmenting the files,
and optimizing each segment separately rather than each file as a whole. I covered the same
three points, although in a slightly different order; first I optimized H.264, then applied per-chunk optimization. Then I did the same for VP9.
Note that for each adjustment, I discussed its
utility both for files encoded for download and
files encoded for adaptive delivery. Some were
usable for download only, but several could also
be used to improve the quality of your adaptive
bitrate (ABR) deliveries.
Table 2 shows the changes that I applied to
my production encodes and their improvement
in PSNR dB and as a percentage. All were directly inspired by comments in the Netflix blog post.
The first adjustment was to change from the
main H.264 profile to the high profile. The potential downside of this change is compatibility, as some much older iOS devices don’t play
video encoded in the high profile.
For Android, Google still recommends using the baseline profile for all H.264 encodes
because the H.264 decoder in the Android OS
plays baseline only, and they have no idea
which hardware codecs are deployed on Android devices. Still, Apple’s most recent HLS
documents recommend using the high profile
in all streams, and you can expect most Android devices to have similar hardware capabilities as their iOS counterparts. So, moving from the
main profile to high is probably
a safe change to make, irrespective of whether you’re encoding for download or streaming, although the gains were
modest, averaging . 26 dB, which
In its discussion of optimized
settings, Netflix identified “in-
creased random access picture period,” which
I took to mean increasing the keyframe inter-
val. In my production encodes, I recommend
a keyframe interval every 2 seconds, which I
changed to one every 15 seconds for my opti-
mized encodes. As you can see in Table 2, this
increased PSNR dB by almost a full percentage
point, so it’s worthwhile for mobile downloads.
One downside of increasing they keyframe in-
terval is decreased random access within the file.
That is, if you expect your viewers to continuously
navigate to random points in the video, increas-
ing the keyframe interval could increase latency
during these operations. For linear playback of
movies and TV shows from a mobile download,
however, the impact should be negligible.
However, when encoding for ABR delivery,
keyframes must divide evenly into segment duration, which is typically 6 seconds or less. So
the longest keyframe interval you should use
when encoding for ABR delivery would be the
duration of your ABR segments.
Bitrate Control/Buffer Size
The biggest increase in quality occurred when
I changed from 110% to 300% constrained VBR,
and increased the VBV buffer from the equivalent of 1 second of video to 3 seconds. This
boosted PSNR by . 77 dB and almost 2 full percentage points. However, between the keyframe
interval adjustment and this one, we changed
for CRF and
target data rates