dvd_trip

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

Features

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 trip_encode.mkv by default
  • 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
  • .ogv - Theora Vorbis
  • sets output frames per second and color settings based on source (PAL / NTSC)
  • deinterlacing
  • detelecining
  • simple presets based on my preferences related to quality: low, medium, high, insane; default is medium

What it does not do:

  • 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.

Quality Presets

The preset levels are set by my own experience of ripping DVDs, all of it though comes from lots of testing, and it's safe to say that the higher ones should look pretty good. :)

The 'insane' preset is designed for really high quality, and if you don't mind waiting a long time or the larger filesize, I'd recommend it. It's intended to be “archive-level” quality for the video – that is, encode it once and be done forever. Since dvd_trip doesn't do audio passthrough (a limitation of libmpv), I can't recommend it for long-term audio storage.

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

Navigation