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:35] 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_drive_status]]   * [[dvd_drive_status]]
-  * [[dvd_copy]] +  * [[dvd_player]] 
-  * [[dvd_eject]]+  * [[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 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 title straight to harddrive or stdout 
-  * ''dvd_copy''copies VOB straight to harddrive or stdout +  * ''dvd_player'' - a DVD player using [[mpv|libmpv]] 
- +  * ''dvd_rip'' - a DVD ripper using [[mpv|libmpv]] 
-To download, see [[http://bluray.beandog.org/dvd_info/]]. +  * ''dvd_backup'' - back up a DVD completelysimilar to [[dvdbackup]] (note the different names) 
- +  ''dvd_debug'' a program to display an excessive amount of information about a DVD
-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, [[http://www.digip.org/jansson/|jansson]] +
- +
-==== dvd_info ==== +
- +
-** Usage: ** dvd_info [options] [-t track number] [dvd path]+
  
-By default will open ''/dev/dvd'' Can also open directories or image files as well.+The code is open-source, licensed under GNU GPL v2.
  
-Examples:+Source code is available at [[https://github.com/beandog/dvd_info]].
  
-<code> +Build requirements: libdvdread, libdvdcss, libmpv (optional, needed for ''dvd_player'' and ''dvd_rip'')
-dvd_info /dev/sr0 +
-dvd_info EXCITING_MOVIE.iso +
-dvd_info ./ +
-</code>+
  
-=== Human-friendly output ===+=== Installation ====
  
-Here's what polling a Batman: The Animated Series DVD looks like:+Then you can do standard ''./configure; make; make install''
  
-<code> +==== Documentation ====
-$ 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 a track:+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]]Alsothere are ''man'' pages for each program.
-dvd_info -t 6 1.005.0053.BATMAN_THE_ANIMATED_SERIES.iso  +
-Disc Title: BATMAN_ANIMATED_SERIES_DISC1 +
-Title: 06Length: 00:22:20.100 Chapters: 01, Cells: 01, Audio streams: 04, Subpictures: 03 +
-</code>+
  
-=== JSON output ===+==== Operating Systems ====
  
-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.+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 a Mac otherwise I'd make sure it works on OS XI'm sure it's fine though.
-$ 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>+