dvd_copy ships with the dvd_info package. It lets you copy a track with specific chapters from a disc to filesystem or stdout. See –help for options:

dvd_copy 1.2 - copy a single DVD track to the filesystem

Usage: dvd_copy [-t track] [-c chapter[-chapter]] [-o filename] [dvd path]

DVD path can be a device name, a single file, or directory.

  dvd_copy		# Read default DVD device (/dev/sr0)
  dvd_copy /dev/dvd	# Read a specific DVD device
  dvd_copy video.iso    # Read an image file
  dvd_copy ~/Videos/DVD	# Read a directory that contains VIDEO_TS

Output filenames:
  dvd_copy		# Save to "dvd_track_##.vob" where ## is longest track
  dvd_copy -o video.vob	# Save to "video.vob" (MPEG2 program stream)
  dvd_copy -o video.mpg	# Save to "video.mpg" (MPEG2 program stream)
  dvd_copy -o -		# Stream to console output (stdout)

Note that saving to a vob or mpg extension doesn't change the content, I'm only adding those examples as a visual indicator that that's what the formats are.

It doesn't copy VobSub subtitle tracks right now, that'd be additional functionality since they're not in the transport stream. The closed captioning subtitles are in there because it's part of the MPEG2 transport stream. You can use ccextractor to get them out.


Here's what I use when copying a DVD and encoding with ffmpeg:

dvd_copy '/dev/sr0' -t '1' -o '-' 2> /dev/null | ffmpeg -hide_banner -i '-' -map '0:v' -map 'i:0x80' -vcodec 'libx264' -vf 'dejudder,fps=30000/1001,fieldmatch,bwdif=mode=send_frame:deint=interlaced,decimate' -acodec 'copy' -metadata:s:a:0 'language=eng' -y 'dvd_rip.mkv'