====== dvd_rip ====== * [[dvd_info]] - main package ''dvd_rip'' is a tiny DVD ripper that is part of [[https://github.com/beandog/dvd_info|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_rip). See also ''--help'' output: dvd_rip - a tiny DVD ripper Usage: dvd_rip [path] [options] -o, --output 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 Select audio language, two character code (default: first audio track) --aid <#> Select audio track ID --slang Select subtitles language, two character code (default: none) --sid <#> Select subtitles track ID Encoding options: -v, --vcodec Video codec (defaut: x265) -q, --crf <#> Video encoder CRF (default: use codec baseline) -a, --acodec Audio codec (default: AAC) -d, --detelecine Detelecine video -e, --deinterlace Deinterlace video Defaults: By default, dvd_rip will encode source to H.264 video with AAC audio in an MP4 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 Other: -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_rip/mpv.conf See mpv man page for syntax and dvd_rip man page for examples. ==== 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 ''dvd_rip_##'' 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