Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
dvd_info [2018/03/28 05:38] beandogdvd_info [2025/04/21 06:09] (current) – external edit 127.0.0.1
Line 1: Line 1:
 ====== dvd_info ====== ====== dvd_info ======
  
-  * [[http://github.com/beandog/dvd_info|GitHub dvd_info repo]] +  * [[http://github.com/beandog/dvd_info|Homepage]] 
-  * [[https://sourceforge.net/projects/dvdinfo/files/|SourceForge downloads]] +  * [[https://github.com/beandog/dvd_info/releases|Downloads]] 
-  * Portability: [[OpenBSD]], [[NetBSD]]+  * [[https://github.com/beandog/dvd_info/wiki|Documentation]]
   * [[dvd_copy]]   * [[dvd_copy]]
   * [[dvd_drive_status]]   * [[dvd_drive_status]]
-  * [[dvd_eject]]+  * [[dvd_player]] 
 +  * [[dvd_rip]] 
 +  * [[dvd_backup]]
  
 My own set of C programs that are small utilities for reading DVD info, and managing DVD drives. My own set of C programs that are small utilities for reading DVD info, and managing DVD drives.
  
-Included:+Includes:
  
-  * ''dvd_info'' - a successor in spirit to [[http://sourceforge.net/projects/lsdvd|lsdvd]], can output information about a DVD in human-readable or JSON output+  * ''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_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 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 title straight to harddrive or stdout 
-  * ''dvd_copy''copies VOB straight to harddrive or stdout+  * ''dvd_player''DVD player using [[mpv|libmpv]] 
 +  * ''dvd_rip'' - a DVD ripper using [[mpv|libmpv]] 
 +  * ''dvd_backup'' - back up a DVD completely, similar to [[dvdbackup]] (note the different names
 +  * ''dvd_debug'' - a program to display an excessive amount of information about a DVD
  
-To downloadsee [[http://bluray.beandog.org/dvd_info/]].+The code is open-sourcelicensed under GNU GPL v2.
  
-The code is open-source, licensed under GNU GPL v2.  Source code is available at [[https://github.com/beandog/dvd_info]].+Source code is available at [[https://github.com/beandog/dvd_info]].
  
-Build requirements: libdvdread, libdvdcss, [[http://www.digip.org/jansson/|jansson]]+Build requirements: libdvdread, libdvdcss, libmpv (optional, needed for ''dvd_player'' and ''dvd_rip'')
  
-==== dvd_info ====+=== Installation ====
  
-** Usage: ** dvd_info [options] [-t track number] [dvd path]+Then you can do standard ''./configure; make; make install''
  
-By default will open ''/dev/dvd'' Can also open directories or image files as well.+==== Documentation ====
  
-Examples:+Run ''--help'' to see what it can do.
  
-<code> +There is more documentation available on the [[https://github.com/beandog/dvd_info/wiki|project wiki]]. Also, there are ''man'' pages for each program.
-dvd_info /dev/sr0 +
-dvd_info EXCITING_MOVIE.iso +
-dvd_info ./ +
-</code>+
  
-=== Human-friendly output ===+==== Operating Systems ====
  
-Here's what polling a Batman: The Animated Series DVD looks like:+I've written it so it will build and run on [[FreeBSD]], [[OpenBSD]], and [[NetBSD]]. You will just need to install the library dependencies and you'll be good to go.
  
-<code> +I don't have Mac otherwise I'd make sure it works on OS XI'm sure it's fine though.
-$ 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 +
-</code> +
- +
-Specifing track: +
- +
-<code> +
-$ 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 +
-</code> +
- +
-=== 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. +
- +
-<code> +
-$ 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":+
-    }, +
-    { +
-     "chapter": 2, +
-     "length": "00:22:20.834", +
-     "msecs": 1340834, +
-     "startcell":+
-    }, +
-    { +
-     "chapter": 3, +
-     "length": "00:22:24.433", +
-     "msecs": 1344433, +
-     "startcell":+
-    }, +
-    { +
-     "chapter": 4, +
-     "length": "00:22:17.000", +
-     "msecs": 1337000, +
-     "startcell":+
-    }, +
-    { +
-     "chapter": 5, +
-     "length": "00:22:18.734", +
-     "msecs": 1338734, +
-     "startcell":+
-    }, +
-    { +
-     "chapter": 6, +
-     "length": "00:22:24.000", +
-     "msecs": 1344000, +
-     "startcell":+
-    }, +
-    { +
-     "chapter": 7, +
-     "length": "00:22:16.000", +
-     "msecs": 1336000, +
-     "startcell":+
-    } +
-   ], +
-   "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":+
-    } +
-   ], +
-   "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":+
-    } +
-   ], +
-   "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":+
-    } +
-   ], +
-   "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":+
-    } +
-   ], +
-   "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":+
-    } +
-   ], +
-   "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":+
-    } +
-   ], +
-   "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":+
-    } +
-   ], +
-   "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":+
-    } +
-   ], +
-   "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":+
-    } +
-   ], +
-   "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":+
-    } +
-   ], +
-   "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":+
-    } +
-   ], +
-   "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":+
-    } +
-   ], +
-   "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":+
-    } +
-   ], +
-   "cells":+
-    { +
-     "cell": 1, +
-     "length": "00:22:20.100", +
-     "msecs": 1340100 +
-    } +
-   ] +
-  } +
- ] +
-+
-</code>+