dvd_trip is a tiny DVD ripper that is part of dvd_info. It is tiny because it has a subset of major DVD ripper options.

A man page is included with the install (man dvd_trip).

See also –help output:

dvd_trip - a tiny DVD ripper

  dvd_trip [path] [options]

  -o, --output <filename>       Save to filename (default: dvd_track_##.mkv)

Track selection:
  -t, --track <#>          	Encode selected track (default: longest)
  -c, --chapter <#>[-#]         Encode chapter number or range (default: all)

Language selection:
      --alang <language>        Select audio language, two character code (default: first audio track)
      --aid <#>                 Select audio track ID
      --slang <language>	Select subtitles language, two character code (default: none)
      --sid <#>                 Select subtitles track ID

Encoding options:

  -v, --vcodec <x264|x265|vpx>	Video codec (defaut: x265)
  -q, --crf <#>			Video encoder CRF (default: use codec baseline)
  -a, --acodec <aac|opus>	Audio codec (default: AAC)
  -d, --detelecine		Detelecine video
  -e, --deinterlace		Deinterlace video


By default, dvd_trip will encode source to HEVC video with AAC audio in a
Matroska container. If an output filename is given with a different extension,
it will use the default settings. for those instead. In each case, the default
presets are used as selected by the codecs as well. Note that mpv must already
be built with support for these codecs, or dvd_trip will quit.

See the man page for more details.

  .mkv - HEVC video, AAC audio
  .mp4 - H.264 video, AAC audio
  .webm - VPX9 video, Opus audio

  -h, --help                    Show this help text and exit
      --version                 Show version info and exit

DVD path can be a device name, a single file, or directory (default: /dev/sr0)

dvd_trip reads a configuration file from ~/.config/dvd_trip/mpv.conf

See mpv man page for syntax and dvd_trip man page for examples.


I originally wrote it as a proof-of-concept and a way to use libmpv's backend for coding. It's good to use if you want to see what a DVD track would look like with some generic settings for encoding, a quick way to get in and out. If you like the way it works, awesome. :)

What it does:

  • requires no arguments, will rip the longest track to dvd_trip_## by default where '##' is the track number.
  • rips the video track plus one audio track
  • can select audio track by language or track id
  • one fixed output based on output filename extension
  • .mkv - H.265 (x265) AAC (fdk-aac)
  • .mp4 - H.264 (x264) AAC (fdk-aac)
  • .webm - VPX9 Opus
  • detelecining

What it does NOT do (this is why it's a tiny ripper):

  • subtitles
  • multiple audio streams
  • auto-cropping
  • add specific codec parameters
  • pass video or audio through

I recommend using something like HandBrake for more advanced options.

x265 Encoding

CRF for x265 ranges from 0 to 51, with the default being 28.

In x265, changing the encoder speed is relative to filesize, not quality. In these presets, however, both CRF and encoding speed are adjusted for each level.

x264 Encoding

CRF for x264 ranges from 0 to 51, with the default being 23.

In x264, changing the encoder speed is relative to quality, not filesize. In these presets, however, both CRF and encoding speed are adjusted for each level.

VPX Encoding

The WebM project recommends doing a two-pass encode as the default options for creating video. I prefer doing a one-pass with a good CRF instead, and that is what's used here.

VPX doesn't have a 'CRF' in the same sense that x264 and x265 do. Instead, you can set minimum and maximum quality scale levels. The lowest being 0, and the highest 63 (rc_min_quantizer and rc_max_quantizer).

The values cannot be set to each other in an attempt to “force” a specific quality level. The library requires that there be a minimium difference of 8 between the two values.

In addition to setting the ranges, the rate control method is set to 'quality'. The other options being VBR, CBR, and constrained quality.

The default settings using libvpx as a one-pass, with no quality scales set is generally low-quality, with lots of blockiness, and so is used for the “low” preset. Depending on your source, you may or may not get a good encode out of it, but setting it to defaults means you could get anything. The other presets set a minimum quality level.

Using vpxenc, here is what the settings would look like for the low preset:

vpxenc --end-usage=q --passes=1 --webm -o vpxenc.webm source.y4m