This is an old revision of the document!


Encoding Specifications

I like to have specifications for encoding content so that I have a snapshot of settings that I used at the time. Doing this, it allows me to verify that everything works across all devices, and expectations and bugs are noted.

dlna-usb-1 (created 2014-07-19)

encoding specifications: dlna-usb-1 (2014-07-19)

Compatability:

  • DLNA streamable (both Sony BDPs)
  • USB compatible (both Sony BDPs)
  • keyint 30 for good seeking in files
  • proper H.264 profile and level for DVDs

Software:

  • Gentoo Linux
  • HandBrake 0.9.9
  • mkvtoolnix 6.7.0
  • libebml 1.3.0
  • libmatroska 1.4.1
  • x264: 0.138.x

Handbrake:

  • chapters
  • decomb
  • detelecine
  • two-pass
  • turbo
  • audio encoder: fdk_aac
  • audio bitrate: 96k
  • video bitrate: 1024k
  • fallback: copy

x264:

  • preset: medium
  • tune: animation or film
  • keyint: 30

H.264:

  • profile: high
  • level: 3.1

mkvtoolnix:

MPlayer 1.1-4.8 on Ubuntu 14.04 has a bug where the subtitle language code does not display in the OSD. The file is properly tagged, and there are not any issues with the Matroska container metadata. Exists in MPlayer 1.1.1 as well.

dlna-usb-2 (created 2014-07-22)

Same as above, but changed libav version to 9.14. Previous version was unspecified.

dlna-usb-3 (created 2014-07-24)

The Gentoo ebuild for HandBrake 0.9.9 has a bug where it does not detect closed caption video on DVD streams. This was confirmed by building the same version from source and running the same tests.

Decided to move to building HandBrake from upstream's source, using the last SVN commit as the latest version.

svn co svn://svn.handbrake.fr/HandBrake/trunk@6239

Here's my configure script:

./configure \
        --launch-jobs=0 \
        --force \
        --enable-x265 \
        --enable-fdk-aac \
        --enable-libav-aac \
        --enable-avformat \
        --disable-gtk \
        --disable-gst

HandBrake now has the option to use libavformat for the container, in addition to internal libmkv and mp4v2: av_mkv, and av_mp4.

The command-line options also were simplified replacing –h264-* with –encoder-*

All said, here's an example of the changes to the command line:

--encoder-preset medium --encoder-tune animation --encoder-profile high --encoder-level 3.1 --format av_mkv

Noticed on this build that HandBrake was setting the vbv-maxsize and vbv-maxrate higher than the H.264 level permitted (3.1 caps at 14,000; was set to 17,500). Added the max limits to the encoding options as well:

--encopts 'keyint=30:vbv-bufsize=14000:vbv-maxrate=14000'

Comparing the x264 settings between a newer and older file, the only other change made was filler is set to 0.

dlna-usb-4 (created 2014-07-26)

Same settings as above, but reverted HandBrake version back to upstream's 0.9.9 release, but without the Gentoo ebuild so that I can have support for closed captioning.

Changed the vbv-bufsize and vbv-maxrate to 1024k.

dlna-usb-5: working spec

Drops the specification requirement for a specific bitrate, but now requires two-pass encoding.

Drop the vbv-maxrate setting. See this doom9 thread for a good explanation on the matter. :)


Navigation