w the data rate from a highly deliverable
flatline to a roller coaster ride of highs
and lows that could easily stall out dur-
ing streaming delivery (Figure 1). When
played back from your hard disk, this
doesn’t matter, but which stream would
you rather deliver to a mobile phone con-
necting via 3G?
These results also may explain the differences between my limited tests and
those achieved by Netflix. That is, had
my starting point reflected 200% constrained VBR delivery, or a slightly more
aggressive VBV size, the overall percentage change that I produced would have
fallen much more in line with those of
Netflix. Note that Netflix uses a buffer
of 2X the average data rate, so any differences between my results and theirs
could relate solely to this difference in
our starting points.
Very Slow Preset
In the blog post, Netflix discussed optimizing encoding settings using “larger motion search range” and “more exhaustive mode
evaluation,” which “allows an encoder to evaluate more encoding options at the expense
of compute time.” It also described the ability
to include more B-frames. To accomplish all
this, I switched from the default medium preset to the very slow preset, which jumps from
three B-frames to eight, from three reference
frames to 16, and incorporates more sophisticated searching for redundancies.
The cost? Encoding time more than doubled.
However, it did deliver an average . 41 dB in
PSNR improvement in our three test files, and
it is an adjustment you can make for ABR video
as well as downloadable video, though you’d be
essentially doubling your encoding costs.
Chunking the Video
To chunk the video, I divided each source
file into 15-second chunks. Then I encoded
each chunk with x264 using CRF encoding at a
value of 23 to compute a target bit rate for each
chunk. Then I created optimized encoding settings for each segment using the parameters
For example, when encoded to a CRF value
of 23, the first chunk of Meridian had an aver-
age data rate of 1,304, which became my tar-
get for the two-pass encoding. Table 3 shows
how the data rate and quality varied over the
12 chunks in the Meridian file.
In terms of workflow, I encoded each chunk
separately using its unique encoding parameters, and then concatenated them into a single
file using Solveig Multimedia’s Video Splitter,
a $49.95 utility that can split and join MP4 files
without re-encoding ( go2sm.com/solveig). You
could also do this in FFmpeg, which I used for
the WebM files, but Video Splitter was so much
easier and worked perfectly.