Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
dvd_info [2018/02/19 21:51]
beandog
dvd_info [2023/12/26 01:50] (current)
beandog
Line 2: Line 2:
  
   * [[http://​github.com/​beandog/​dvd_info|GitHub dvd_info repo]]   * [[http://​github.com/​beandog/​dvd_info|GitHub dvd_info repo]]
-  * [[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]] on wiki, also see man pages 
 +  * Portability: ​Linux, Cygwin, ​[[OpenBSD]],​ [[NetBSD]], FreeBSD 
 +  * [[dvd_copy]] 
 +  * [[dvd_drive_status]] 
 +  * [[dvd_player]] 
 +  * [[dvd_rip]]
  
 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.
Line 9: Line 14:
 Included: Included:
  
-  * ''​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_eject''​ - a small eject utility that does its best to make sure a drive is properly closed and ready to go before being able to access ​it (very useful for shell scripts that access DVD drives) 
 +  * ''​dvd_copy''​ - copies a title straight to harddrive or stdout 
 +  * ''​dvd_player''​ - a DVD player using [[mpv|libmpv]] 
 +  * ''​dvd_trip''​ - a DVD ripper using [[mpv|libmpv]] 
 +  * ''​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_trip''​)
  
-==== 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.+==== dvd_info ====
  
-Examples:+See ''​--help''​ for all the fancy stuff it can do. A man page (man dvd_info) is also included.
  
 <​code>​ <​code>​
-dvd_info ​/dev/sr0 +dvd_info ​- display information about a DVD 
-dvd_info EXCITING_MOVIE.iso + 
-dvd_info ​./+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)
 </​code>​ </​code>​
  
Line 38: Line 77:
  
 <​code>​ <​code>​
-$ dvd_info ​1.005.0053.BATMAN_THE_ANIMATED_SERIES.iso ​+$ dvd_info BATMAN_THE_ANIMATED_SERIES.iso ​
 Disc Title: BATMAN_ANIMATED_SERIES_DISC1 Disc Title: BATMAN_ANIMATED_SERIES_DISC1
 Title: 01, Length: 02:​36:​21.100 Chapters: 07, Cells: 07, Audio streams: 04, Subpictures:​ 03 Title: 01, Length: 02:​36:​21.100 Chapters: 07, Cells: 07, Audio streams: 04, Subpictures:​ 03
Line 60: Line 99:
  
 <​code>​ <​code>​
-$ dvd_info -t 6 1.005.0053.BATMAN_THE_ANIMATED_SERIES.iso ​+$ dvd_info -t BATMAN_THE_ANIMATED_SERIES.iso ​
 Disc Title: BATMAN_ANIMATED_SERIES_DISC1 Disc Title: BATMAN_ANIMATED_SERIES_DISC1
 Title: 06, Length: 00:​22:​20.100 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
Line 67: Line 106:
 === JSON output === === 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.+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":​ 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 
-    } 
-   ] 
-  } 
- ] 
-} 
-</​code>​ 

Navigation