dvd_info

My own set of C programs that are small utilities for reading DVD info, and managing DVD drives.

Included:

  • dvd_info - a successor in spirit to lsdvd, can output information about a DVD in human-readable or JSON output
  • dvd_drive_status - poll the DVD drive to see the status of a drive: open, polling, closed with no disc, closed with disc
  • dvd_eject - a small eject utility that does its best to make sure a drive is properly closed and ready to go before being able toa ccess it (very useful for shell scripts that access DVD drives)
  • dvd_copy - copies a VOB straight to harddrive or stdout
  • dvd_player - a DVD player using libmpv
  • dvd_trip - a DVD ripper using libmpv

The code is open-source, licensed under GNU GPL v2. Source code is available at https://github.com/beandog/dvd_info.

Build requirements: libdvdread, libdvdcss, libmpv (optional)

Installation

Then you can do standard ./configure; make; make install

dvd_info

See –help for all the fancy stuff it can do. A man page (man dvd_info) is also included.

dvd_info - display information about a DVD

Usage: dvd_info [path] [options]

Options:
  -t, --track <number>  Limit to selected track (default: all tracks)
  -j, --json            Display output in JSON format

Detailed information:
  -v, --video           Display video streams
  -a, --audio           Display audio streams
  -s, --subtitles       Display VobSub subtitles
  -c, --chapters        Display chapters
  -d, --cells           Display cells
  -x, --all             Display all

Narrow results:
  -l, --longest		Track with the longest length
  -A, --has-audio       Track has audio streams
  -S, --has-subtitles   Track has VobSub subtitles
  -E, --seconds <secs>  Track has minimum number of seconds
  -M, --minutes <mins>  Track has minimum number of minutes
  -T, --vts <number>    Track is in video title set number
  -L, --valid		Track is marked as valid

Other:
  -i, --id		Display DVD ID only
  -u, --volume		Display DVD UDF volume name only (for ISO or disc)
  -g, --xchap           Display title's chapter format for mkvmerge
  -h, --help            Display these help options
      --version         Display version

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

Human-friendly output

Here's what polling a Batman: The Animated Series DVD looks like:

$ dvd_info 1.005.0053.BATMAN_THE_ANIMATED_SERIES.iso 
Disc Title: BATMAN_ANIMATED_SERIES_DISC1
Title: 01, Length: 02:36:21.100 Chapters: 07, Cells: 07, Audio streams: 04, Subpictures: 03
Title: 02, Length: 00:00:12.000 Chapters: 01, Cells: 01, Audio streams: 04, Subpictures: 03
Title: 03, Length: 00:00:32.033 Chapters: 01, Cells: 01, Audio streams: 04, Subpictures: 03
Title: 04, Length: 00:01:06.800 Chapters: 01, Cells: 01, Audio streams: 04, Subpictures: 03
Title: 05, Length: 00:00:29.967 Chapters: 01, Cells: 01, Audio streams: 04, Subpictures: 03
Title: 06, Length: 00:22:20.100 Chapters: 01, Cells: 01, Audio streams: 04, Subpictures: 03
Title: 07, Length: 00:22:20.834 Chapters: 01, Cells: 01, Audio streams: 04, Subpictures: 03
Title: 08, Length: 00:22:24.433 Chapters: 01, Cells: 01, Audio streams: 04, Subpictures: 03
Title: 09, Length: 00:22:17.000 Chapters: 01, Cells: 01, Audio streams: 04, Subpictures: 03
Title: 10, Length: 00:22:18.734 Chapters: 01, Cells: 01, Audio streams: 04, Subpictures: 03
Title: 11, Length: 00:22:24.000 Chapters: 01, Cells: 01, Audio streams: 04, Subpictures: 03
Title: 12, Length: 00:22:16.000 Chapters: 01, Cells: 01, Audio streams: 04, Subpictures: 03
Title: 13, Length: 00:05:02.000 Chapters: 01, Cells: 01, Audio streams: 04, Subpictures: 03
Title: 14, Length: 00:22:20.100 Chapters: 01, Cells: 01, Audio streams: 04, Subpictures: 03
Longest track: 01

Specifing a track:

$ dvd_info -t 6 1.005.0053.BATMAN_THE_ANIMATED_SERIES.iso 
Disc Title: BATMAN_ANIMATED_SERIES_DISC1
Title: 06, Length: 00:22:20.100 Chapters: 01, Cells: 01, Audio streams: 04, Subpictures: 03

JSON output

The JSON output functionality will print *all* the information that dvd_info polls about the DVD. This is far more than the human-friendly output.


Navigation