This is an old revision of the document!


Steve's Preferences

My personal rule-set when ripping DVDs.

Some references / general rules:

  • Always use film or animation tune options
  • Always use medium preset; if you want to tweak, do it somewhere else
  • DVDs always use H.264 high / 3.1 max
  • “New” animation is anything after Batman: the Animated Series
  • “High quality” animation is anything starting with Samurai Jack, Teen Titans, Batman Beyond and newer – lots of movement, broad color range
  • “New” TV shows on DVD anything contemporary with 7th Heaven and beyond
  • Need a target filesize for older animation / TV shows – might be per-show or just per-length

Main title is 60+ minutes, or audio has more than 2 channels:

  • Use -mtune film
  • Copy DTS/AC3 main audio track
  • Prefer DTS in every case
  • High / 3.1

Old animation

  • Use -mtune animation
  • 2-pass encode, target filesize
  • Baseline, Medium or High / 3.1

Old animation shorts (or favorites)

  • Examples: Looney Tunes, Tom & Jerry
  • Use -mtune animation
  • Higher quality encoding settings (need to spec out)
  • Baseline, Medium or High / 3.1

Old movies – black and white or poor quality

  • Use -mtune grain or it may make artifacts worse
  • Baseline, Medium or High / 3.1

New animation

  • Use -mtune animation
  • Need to spec out
  • High / 3.1

High-quality animation

  • Examples: Justice League, Batman Beyond, Teen Titans
  • Use -mtune animation
  • Copy AC3 track directly
  • High / 3.1

Gentoo

Install ffmpeg from portage. Install latest libav from source. Install HandBrake from source.

The reasons being that I don't want to shoehorn my other packages into using libav. I can install it manually and just use avconv whenever I want to. Installing HandBrake from source will use libav anyway.

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

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. :)

  • HandBrake 0.10.0 (beta3 or newer, up to final release)
  • libdvdread 5.0.0
  • libdvdnav 5.0.1
  • libdvdcss 1.3.0
  • direct AC3/DTS copy
  • mkvtoolnix 7.2.0
  • libav 9.14

dvd-mkv-3: working metadata spec

  • HandBrake version
  • collection title
  • series title
  • original media type: dvd
  • dvds database: dvd id, episode id
  • episode season, year, number, part
  • date tagged
  • play counter

dlna-ps4-plex-1

Created July 2015.

This is mostly just bringing the software versions up to date. Target client players now include PS4's Media Player, Plex and continues support for DLNA. Dropping testing on USB completely, as the chances of using it drift farther away.

The main target of this one is to do testing with Plex media server as well, so this is a testing spec at the moment. Plex has seeking issues at times, and also crashes on certain videos. Some other features that are going to go into this spec is packing SRT subtitles, adding poster art, and including a lot more metadata about the DVD source and its season, episode numbers, etc.

Limit x264 preset to either 'slow' or above in quality.

All encodes are done at 2048k video bitrate.

  • HandBrake 0.10.2
  • libdvdread 5.0.3 vanilla
  • libdvdnav 5.0.3 vanilla
  • libdvdcss 1.3.0
  • libmatroska 1.4.2
  • libebml 1.3.1
  • mkvtoolnix 8.2.0
  • libav 11.4

Everything here is just a release update to the latest software. mkvtoolnix, however, has some specific things in it that I find interesting that I could use in the future:

7.3.0 can read teletext straight from an MPEG-2 transport stream and convert it directly to an SRT and it has better handling of broken MPEG-2 transport streams. 7.4.0 more teletext fixes. 7.5.0 has more bug fixes related to MPEG transport streams. 7.7.0 has lots of changes to reading AC3 and Blu-ray audio codecs. 7.8.0 has new features for detecting DTS streams. 7.9.0 lots more added features and bug fixes for reading Dolby Digital, DTS, DTS-HD streams.

MPEG 2 Train Station (March 2018)

Since this is using Matroska, it's not intended to be backwards compatible with anything (PS3, PS4, DLNA, USB). My target hardware is Android TV.

  • HandBrake 1.0.2 minimum, 1.0.7 maximum OR
  • libav 12.0 to libav 12.3
  • Chapter support
  • Matroska container
  • x264 with tune animation, film, or grain, slow preset at minimum
  • H.264 profile high level 4.1 minimum, 5.1 maximum
  • CRF minimum of 23, maximum of 14
  • 30 or 60 constant fps
  • FDK AAC default bitrate (let HandBrake decide) OR
  • AC3 re-encode default bitrate (also let HandBrake decide)
  • smpte170m color set
  • VobSub or Closed Captioning, first English language stream, prefer VobSub

If I *did* want to make it backwards compatible, here's all that would change:

  • FDK AAC only
  • MPEG4 container

If I wanted to be even more strict to avoid throwing off certain hardware:

  • No VobSub or Closed Captioning
  • No chapter support
  • Variable framerate same as source or 30 constant fps
  • medium preset

Navigation