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

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

dvd_info

See –help for all the fancy stuff it can do:

dvd_info 1.2 - display information about a DVD

Usage: dvd_info [options] [-t track number] [dvd path]

Options:
  -t, --track #		Limit to one track number (default: longest)

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

Formatting:
  -j, --json		Display output in JSON format
  -o, --ogm		Display OGM chapter format for track (default: longest)
  -i, --id		Display DVD id only (from libdvdread)
  -T, --title		Display DVD title only (path must be device or file)

Other:
  -q, --quiet		Don't display DVD title, longest track
  -h, --help		Display these help options
  -V, --version		Version information

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

Examples:
  dvd_info		# Read default DVD device (/dev/sr0)
  dvd_info /dev/dvd	# Read a specific DVD device
  dvd_info movie.iso	# Read an image file
  dvd_info ~/movie/	# Read a directory that contains VIDEO_TS

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.

$ dvd_info -j 1.005.0053.BATMAN_THE_ANIMATED_SERIES.iso
{
 "dvd": {
  "title": "BATMAN_ANIMATED_SERIES_DISC1",
  "side": 1,
  "tracks": 14,
  "longest track": 1,
  "provider id": "WARNER HOME VIDEO",
  "vmg id": "DVDVIDEO-VMG",
  "video title sets": 1,
  "dvdread id": "b4e9000903e4ec04c275dd6f9abfb944"
 },
 "tracks": [
  {
   "track": 1,
   "length": "02:36:21.100",
   "msecs": 9381100,
   "vts": 1,
   "ttn": 1,
   "video": {
    "codec": "MPEG2",
    "format": "NTSC",
    "aspect ratio": "4:3",
    "width": 720,
    "height": 480,
    "angles": 1,
    "fps": "29.97"
   },
   "audio": [
    {
     "track": 1,
     "active": 1,
     "lang code": "en",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x80"
    },
    {
     "track": 2,
     "active": 1,
     "lang code": "fr",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x81"
    },
    {
     "track": 3,
     "active": 1,
     "lang code": "es",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x82"
    },
    {
     "track": 4,
     "active": 0,
     "lang code": "en",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x83"
    }
   ],
   "subtitles": [
    {
     "track": 1,
     "active": 1,
     "lang code": "en",
     "stream id": "0x20"
    },
    {
     "track": 2,
     "active": 1,
     "lang code": "fr",
     "stream id": "0x21"
    },
    {
     "track": 3,
     "active": 1,
     "lang code": "es",
     "stream id": "0x22"
    }
   ],
   "chapters": [
    {
     "chapter": 1,
     "length": "00:22:20.100",
     "msecs": 1340100,
     "startcell": 1
    },
    {
     "chapter": 2,
     "length": "00:22:20.834",
     "msecs": 1340834,
     "startcell": 2
    },
    {
     "chapter": 3,
     "length": "00:22:24.433",
     "msecs": 1344433,
     "startcell": 3
    },
    {
     "chapter": 4,
     "length": "00:22:17.000",
     "msecs": 1337000,
     "startcell": 4
    },
    {
     "chapter": 5,
     "length": "00:22:18.734",
     "msecs": 1338734,
     "startcell": 5
    },
    {
     "chapter": 6,
     "length": "00:22:24.000",
     "msecs": 1344000,
     "startcell": 6
    },
    {
     "chapter": 7,
     "length": "00:22:16.000",
     "msecs": 1336000,
     "startcell": 7
    }
   ],
   "cells": [
    {
     "cell": 1,
     "length": "00:22:20.100",
     "msecs": 1340100
    },
    {
     "cell": 2,
     "length": "00:22:20.834",
     "msecs": 1340834
    },
    {
     "cell": 3,
     "length": "00:22:24.433",
     "msecs": 1344433
    },
    {
     "cell": 4,
     "length": "00:22:17.000",
     "msecs": 1337000
    },
    {
     "cell": 5,
     "length": "00:22:18.734",
     "msecs": 1338734
    },
    {
     "cell": 6,
     "length": "00:22:24.000",
     "msecs": 1344000
    },
    {
     "cell": 7,
     "length": "00:22:16.000",
     "msecs": 1336000
    }
   ]
  },
  {
   "track": 2,
   "length": "00:00:12.000",
   "msecs": 12000,
   "vts": 1,
   "ttn": 2,
   "video": {
    "codec": "MPEG2",
    "format": "NTSC",
    "aspect ratio": "4:3",
    "width": 720,
    "height": 480,
    "angles": 1,
    "fps": "29.97"
   },
   "audio": [
    {
     "track": 1,
     "active": 1,
     "lang code": "en",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x80"
    },
    {
     "track": 2,
     "active": 1,
     "lang code": "fr",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x81"
    },
    {
     "track": 3,
     "active": 1,
     "lang code": "es",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x82"
    },
    {
     "track": 4,
     "active": 0,
     "lang code": "en",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x83"
    }
   ],
   "subtitles": [
    {
     "track": 1,
     "active": 1,
     "lang code": "en",
     "stream id": "0x20"
    },
    {
     "track": 2,
     "active": 1,
     "lang code": "fr",
     "stream id": "0x21"
    },
    {
     "track": 3,
     "active": 1,
     "lang code": "es",
     "stream id": "0x22"
    }
   ],
   "chapters": [
    {
     "chapter": 1,
     "length": "00:00:12.000",
     "msecs": 12000,
     "startcell": 1
    }
   ],
   "cells": [
    {
     "cell": 1,
     "length": "00:00:12.000",
     "msecs": 12000
    }
   ]
  },
  {
   "track": 3,
   "length": "00:00:32.033",
   "msecs": 32033,
   "vts": 1,
   "ttn": 3,
   "video": {
    "codec": "MPEG2",
    "format": "NTSC",
    "aspect ratio": "4:3",
    "width": 720,
    "height": 480,
    "angles": 1,
    "fps": "29.97"
   },
   "audio": [
    {
     "track": 1,
     "active": 1,
     "lang code": "en",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x80"
    },
    {
     "track": 2,
     "active": 1,
     "lang code": "fr",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x81"
    },
    {
     "track": 3,
     "active": 1,
     "lang code": "es",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x82"
    },
    {
     "track": 4,
     "active": 0,
     "lang code": "en",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x83"
    }
   ],
   "subtitles": [
    {
     "track": 1,
     "active": 1,
     "lang code": "en",
     "stream id": "0x20"
    },
    {
     "track": 2,
     "active": 1,
     "lang code": "fr",
     "stream id": "0x21"
    },
    {
     "track": 3,
     "active": 1,
     "lang code": "es",
     "stream id": "0x22"
    }
   ],
   "chapters": [
    {
     "chapter": 1,
     "length": "00:00:32.033",
     "msecs": 32033,
     "startcell": 1
    }
   ],
   "cells": [
    {
     "cell": 1,
     "length": "00:00:32.033",
     "msecs": 32033
    }
   ]
  },
  {
   "track": 4,
   "length": "00:01:06.800",
   "msecs": 66800,
   "vts": 1,
   "ttn": 4,
   "video": {
    "codec": "MPEG2",
    "format": "NTSC",
    "aspect ratio": "4:3",
    "width": 720,
    "height": 480,
    "angles": 1,
    "fps": "29.97"
   },
   "audio": [
    {
     "track": 1,
     "active": 1,
     "lang code": "en",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x80"
    },
    {
     "track": 2,
     "active": 1,
     "lang code": "fr",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x81"
    },
    {
     "track": 3,
     "active": 1,
     "lang code": "es",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x82"
    },
    {
     "track": 4,
     "active": 0,
     "lang code": "en",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x83"
    }
   ],
   "subtitles": [
    {
     "track": 1,
     "active": 1,
     "lang code": "en",
     "stream id": "0x20"
    },
    {
     "track": 2,
     "active": 1,
     "lang code": "fr",
     "stream id": "0x21"
    },
    {
     "track": 3,
     "active": 1,
     "lang code": "es",
     "stream id": "0x22"
    }
   ],
   "chapters": [
    {
     "chapter": 1,
     "length": "00:01:06.800",
     "msecs": 66800,
     "startcell": 1
    }
   ],
   "cells": [
    {
     "cell": 1,
     "length": "00:01:06.800",
     "msecs": 66800
    }
   ]
  },
  {
   "track": 5,
   "length": "00:00:29.967",
   "msecs": 29967,
   "vts": 1,
   "ttn": 5,
   "video": {
    "codec": "MPEG2",
    "format": "NTSC",
    "aspect ratio": "4:3",
    "width": 720,
    "height": 480,
    "angles": 1,
    "fps": "29.97"
   },
   "audio": [
    {
     "track": 1,
     "active": 1,
     "lang code": "en",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x80"
    },
    {
     "track": 2,
     "active": 1,
     "lang code": "fr",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x81"
    },
    {
     "track": 3,
     "active": 1,
     "lang code": "es",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x82"
    },
    {
     "track": 4,
     "active": 0,
     "lang code": "en",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x83"
    }
   ],
   "subtitles": [
    {
     "track": 1,
     "active": 1,
     "lang code": "en",
     "stream id": "0x20"
    },
    {
     "track": 2,
     "active": 1,
     "lang code": "fr",
     "stream id": "0x21"
    },
    {
     "track": 3,
     "active": 1,
     "lang code": "es",
     "stream id": "0x22"
    }
   ],
   "chapters": [
    {
     "chapter": 1,
     "length": "00:00:29.967",
     "msecs": 29967,
     "startcell": 1
    }
   ],
   "cells": [
    {
     "cell": 1,
     "length": "00:00:29.967",
     "msecs": 29967
    }
   ]
  },
  {
   "track": 6,
   "length": "00:22:20.100",
   "msecs": 1340100,
   "vts": 1,
   "ttn": 6,
   "video": {
    "codec": "MPEG2",
    "format": "NTSC",
    "aspect ratio": "4:3",
    "width": 720,
    "height": 480,
    "angles": 1,
    "fps": "29.97"
   },
   "audio": [
    {
     "track": 1,
     "active": 1,
     "lang code": "en",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x80"
    },
    {
     "track": 2,
     "active": 1,
     "lang code": "fr",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x81"
    },
    {
     "track": 3,
     "active": 1,
     "lang code": "es",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x82"
    },
    {
     "track": 4,
     "active": 0,
     "lang code": "en",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x83"
    }
   ],
   "subtitles": [
    {
     "track": 1,
     "active": 1,
     "lang code": "en",
     "stream id": "0x20"
    },
    {
     "track": 2,
     "active": 1,
     "lang code": "fr",
     "stream id": "0x21"
    },
    {
     "track": 3,
     "active": 1,
     "lang code": "es",
     "stream id": "0x22"
    }
   ],
   "chapters": [
    {
     "chapter": 1,
     "length": "00:22:20.100",
     "msecs": 1340100,
     "startcell": 1
    }
   ],
   "cells": [
    {
     "cell": 1,
     "length": "00:22:20.100",
     "msecs": 1340100
    }
   ]
  },
  {
   "track": 7,
   "length": "00:22:20.834",
   "msecs": 1340834,
   "vts": 1,
   "ttn": 7,
   "video": {
    "codec": "MPEG2",
    "format": "NTSC",
    "aspect ratio": "4:3",
    "width": 720,
    "height": 480,
    "angles": 1,
    "fps": "29.97"
   },
   "audio": [
    {
     "track": 1,
     "active": 1,
     "lang code": "en",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x80"
    },
    {
     "track": 2,
     "active": 1,
     "lang code": "fr",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x81"
    },
    {
     "track": 3,
     "active": 1,
     "lang code": "es",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x82"
    },
    {
     "track": 4,
     "active": 0,
     "lang code": "en",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x83"
    }
   ],
   "subtitles": [
    {
     "track": 1,
     "active": 1,
     "lang code": "en",
     "stream id": "0x20"
    },
    {
     "track": 2,
     "active": 1,
     "lang code": "fr",
     "stream id": "0x21"
    },
    {
     "track": 3,
     "active": 1,
     "lang code": "es",
     "stream id": "0x22"
    }
   ],
   "chapters": [
    {
     "chapter": 1,
     "length": "00:22:20.834",
     "msecs": 1340834,
     "startcell": 1
    }
   ],
   "cells": [
    {
     "cell": 1,
     "length": "00:22:20.834",
     "msecs": 1340834
    }
   ]
  },
  {
   "track": 8,
   "length": "00:22:24.433",
   "msecs": 1344433,
   "vts": 1,
   "ttn": 8,
   "video": {
    "codec": "MPEG2",
    "format": "NTSC",
    "aspect ratio": "4:3",
    "width": 720,
    "height": 480,
    "angles": 1,
    "fps": "29.97"
   },
   "audio": [
    {
     "track": 1,
     "active": 1,
     "lang code": "en",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x80"
    },
    {
     "track": 2,
     "active": 1,
     "lang code": "fr",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x81"
    },
    {
     "track": 3,
     "active": 1,
     "lang code": "es",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x82"
    },
    {
     "track": 4,
     "active": 0,
     "lang code": "en",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x83"
    }
   ],
   "subtitles": [
    {
     "track": 1,
     "active": 1,
     "lang code": "en",
     "stream id": "0x20"
    },
    {
     "track": 2,
     "active": 1,
     "lang code": "fr",
     "stream id": "0x21"
    },
    {
     "track": 3,
     "active": 1,
     "lang code": "es",
     "stream id": "0x22"
    }
   ],
   "chapters": [
    {
     "chapter": 1,
     "length": "00:22:24.433",
     "msecs": 1344433,
     "startcell": 1
    }
   ],
   "cells": [
    {
     "cell": 1,
     "length": "00:22:24.433",
     "msecs": 1344433
    }
   ]
  },
  {
   "track": 9,
   "length": "00:22:17.000",
   "msecs": 1337000,
   "vts": 1,
   "ttn": 9,
   "video": {
    "codec": "MPEG2",
    "format": "NTSC",
    "aspect ratio": "4:3",
    "width": 720,
    "height": 480,
    "angles": 1,
    "fps": "29.97"
   },
   "audio": [
    {
     "track": 1,
     "active": 1,
     "lang code": "en",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x80"
    },
    {
     "track": 2,
     "active": 1,
     "lang code": "fr",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x81"
    },
    {
     "track": 3,
     "active": 1,
     "lang code": "es",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x82"
    },
    {
     "track": 4,
     "active": 0,
     "lang code": "en",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x83"
    }
   ],
   "subtitles": [
    {
     "track": 1,
     "active": 1,
     "lang code": "en",
     "stream id": "0x20"
    },
    {
     "track": 2,
     "active": 1,
     "lang code": "fr",
     "stream id": "0x21"
    },
    {
     "track": 3,
     "active": 1,
     "lang code": "es",
     "stream id": "0x22"
    }
   ],
   "chapters": [
    {
     "chapter": 1,
     "length": "00:22:17.000",
     "msecs": 1337000,
     "startcell": 1
    }
   ],
   "cells": [
    {
     "cell": 1,
     "length": "00:22:17.000",
     "msecs": 1337000
    }
   ]
  },
  {
   "track": 10,
   "length": "00:22:18.734",
   "msecs": 1338734,
   "vts": 1,
   "ttn": 10,
   "video": {
    "codec": "MPEG2",
    "format": "NTSC",
    "aspect ratio": "4:3",
    "width": 720,
    "height": 480,
    "angles": 1,
    "fps": "29.97"
   },
   "audio": [
    {
     "track": 1,
     "active": 1,
     "lang code": "en",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x80"
    },
    {
     "track": 2,
     "active": 1,
     "lang code": "fr",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x81"
    },
    {
     "track": 3,
     "active": 1,
     "lang code": "es",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x82"
    },
    {
     "track": 4,
     "active": 0,
     "lang code": "en",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x83"
    }
   ],
   "subtitles": [
    {
     "track": 1,
     "active": 1,
     "lang code": "en",
     "stream id": "0x20"
    },
    {
     "track": 2,
     "active": 1,
     "lang code": "fr",
     "stream id": "0x21"
    },
    {
     "track": 3,
     "active": 1,
     "lang code": "es",
     "stream id": "0x22"
    }
   ],
   "chapters": [
    {
     "chapter": 1,
     "length": "00:22:18.734",
     "msecs": 1338734,
     "startcell": 1
    }
   ],
   "cells": [
    {
     "cell": 1,
     "length": "00:22:18.734",
     "msecs": 1338734
    }
   ]
  },
  {
   "track": 11,
   "length": "00:22:24.000",
   "msecs": 1344000,
   "vts": 1,
   "ttn": 11,
   "video": {
    "codec": "MPEG2",
    "format": "NTSC",
    "aspect ratio": "4:3",
    "width": 720,
    "height": 480,
    "angles": 1,
    "fps": "29.97"
   },
   "audio": [
    {
     "track": 1,
     "active": 1,
     "lang code": "en",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x80"
    },
    {
     "track": 2,
     "active": 1,
     "lang code": "fr",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x81"
    },
    {
     "track": 3,
     "active": 1,
     "lang code": "es",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x82"
    },
    {
     "track": 4,
     "active": 0,
     "lang code": "en",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x83"
    }
   ],
   "subtitles": [
    {
     "track": 1,
     "active": 1,
     "lang code": "en",
     "stream id": "0x20"
    },
    {
     "track": 2,
     "active": 1,
     "lang code": "fr",
     "stream id": "0x21"
    },
    {
     "track": 3,
     "active": 1,
     "lang code": "es",
     "stream id": "0x22"
    }
   ],
   "chapters": [
    {
     "chapter": 1,
     "length": "00:22:24.000",
     "msecs": 1344000,
     "startcell": 1
    }
   ],
   "cells": [
    {
     "cell": 1,
     "length": "00:22:24.000",
     "msecs": 1344000
    }
   ]
  },
  {
   "track": 12,
   "length": "00:22:16.000",
   "msecs": 1336000,
   "vts": 1,
   "ttn": 12,
   "video": {
    "codec": "MPEG2",
    "format": "NTSC",
    "aspect ratio": "4:3",
    "width": 720,
    "height": 480,
    "angles": 1,
    "fps": "29.97"
   },
   "audio": [
    {
     "track": 1,
     "active": 1,
     "lang code": "en",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x80"
    },
    {
     "track": 2,
     "active": 1,
     "lang code": "fr",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x81"
    },
    {
     "track": 3,
     "active": 1,
     "lang code": "es",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x82"
    },
    {
     "track": 4,
     "active": 0,
     "lang code": "en",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x83"
    }
   ],
   "subtitles": [
    {
     "track": 1,
     "active": 1,
     "lang code": "en",
     "stream id": "0x20"
    },
    {
     "track": 2,
     "active": 1,
     "lang code": "fr",
     "stream id": "0x21"
    },
    {
     "track": 3,
     "active": 1,
     "lang code": "es",
     "stream id": "0x22"
    }
   ],
   "chapters": [
    {
     "chapter": 1,
     "length": "00:22:16.000",
     "msecs": 1336000,
     "startcell": 1
    }
   ],
   "cells": [
    {
     "cell": 1,
     "length": "00:22:16.000",
     "msecs": 1336000
    }
   ]
  },
  {
   "track": 13,
   "length": "00:05:02.000",
   "msecs": 302000,
   "vts": 1,
   "ttn": 13,
   "video": {
    "codec": "MPEG2",
    "format": "NTSC",
    "aspect ratio": "4:3",
    "width": 720,
    "height": 480,
    "angles": 1,
    "fps": "29.97"
   },
   "audio": [
    {
     "track": 1,
     "active": 1,
     "lang code": "en",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x80"
    },
    {
     "track": 2,
     "active": 1,
     "lang code": "fr",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x81"
    },
    {
     "track": 3,
     "active": 1,
     "lang code": "es",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x82"
    },
    {
     "track": 4,
     "active": 0,
     "lang code": "en",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x83"
    }
   ],
   "subtitles": [
    {
     "track": 1,
     "active": 1,
     "lang code": "en",
     "stream id": "0x20"
    },
    {
     "track": 2,
     "active": 1,
     "lang code": "fr",
     "stream id": "0x21"
    },
    {
     "track": 3,
     "active": 1,
     "lang code": "es",
     "stream id": "0x22"
    }
   ],
   "chapters": [
    {
     "chapter": 1,
     "length": "00:05:02.000",
     "msecs": 302000,
     "startcell": 1
    }
   ],
   "cells": [
    {
     "cell": 1,
     "length": "00:05:02.000",
     "msecs": 302000
    }
   ]
  },
  {
   "track": 14,
   "length": "00:22:20.100",
   "msecs": 1340100,
   "vts": 1,
   "ttn": 14,
   "video": {
    "codec": "MPEG2",
    "format": "NTSC",
    "aspect ratio": "4:3",
    "width": 720,
    "height": 480,
    "angles": 1,
    "fps": "29.97"
   },
   "audio": [
    {
     "track": 1,
     "active": 1,
     "lang code": "en",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x80"
    },
    {
     "track": 2,
     "active": 1,
     "lang code": "fr",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x81"
    },
    {
     "track": 3,
     "active": 1,
     "lang code": "es",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x82"
    },
    {
     "track": 4,
     "active": 0,
     "lang code": "en",
     "codec": "ac3",
     "channels": 2,
     "stream id": "0x83"
    }
   ],
   "subtitles": [
    {
     "track": 1,
     "active": 1,
     "lang code": "en",
     "stream id": "0x20"
    },
    {
     "track": 2,
     "active": 1,
     "lang code": "fr",
     "stream id": "0x21"
    },
    {
     "track": 3,
     "active": 1,
     "lang code": "es",
     "stream id": "0x22"
    }
   ],
   "chapters": [
    {
     "chapter": 1,
     "length": "00:22:20.100",
     "msecs": 1340100,
     "startcell": 1
    }
   ],
   "cells": [
    {
     "cell": 1,
     "length": "00:22:20.100",
     "msecs": 1340100
    }
   ]
  }
 ]
}

Navigation