1{
2  "$schema": "http://json-schema.org/draft-04/schema#",
3  "id": "https://mkvtoolnix.download/doc/mkvmerge-identification-output-schema-v11.json",
4  "title": "mkvmerge identification output",
5  "description": "The JSON output produced by mkvmerge's file identification mode",
6  "additionalProperties": false,
7  "type": "object",
8  "properties": {
9    "attachments": {
10      "description": "an array describing the attachments found if any",
11      "type": "array",
12      "items": {
13        "additionalProperties": false,
14        "type": "object",
15        "properties": {
16          "content_type": {
17            "type": "string",
18            "minLength": 1
19          },
20          "description": {
21            "type": "string"
22          },
23          "file_name": {
24            "type": "string"
25          },
26          "id": {
27            "type": "integer",
28            "minimum": 0
29          },
30          "size": {
31            "type": "integer",
32            "minimum": 0
33          },
34          "properties": {
35            "additionalProperties": false,
36            "type": "object",
37            "properties": {
38              "uid": {
39                "type": "integer",
40                "minimum": 0
41              }
42            },
43            "additionalProperties": false
44          },
45          "type": {
46            "type": "string"
47          }
48        },
49        "additionalProperties": false,
50        "required": [
51          "file_name",
52          "id",
53          "properties",
54          "size"
55        ]
56      }
57    },
58    "chapters": {
59      "type": "array",
60      "items": {
61        "additionalProperties": false,
62        "type": "object",
63        "properties": {
64          "num_entries": {
65            "type": "integer"
66          }
67        },
68        "additionalProperties": false,
69        "required": [
70          "num_entries"
71        ]
72      }
73    },
74    "container": {
75      "additionalProperties": false,
76      "description": "information about the identified container",
77      "type": "object",
78      "properties": {
79        "properties": {
80          "additionalProperties": false,
81          "description": "additional properties for the container varying by container format",
82          "type": "object",
83          "properties": {
84            "container_type": {
85              "description": "A unique number identifying the container type that's supposed to stay constant over all future releases of MKVToolNix",
86              "type": "integer",
87              "minLength": 1
88            },
89            "date_local": {
90              "description": "The muxing date in ISO 8601 format (in local time zone)",
91              "type": "string",
92              "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}([+-][0-9]{2}:[0-9]{2}|Z)$"
93            },
94            "date_utc": {
95              "description": "The muxing date in ISO 8601 format (in UTC)",
96              "type": "string",
97              "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}([+-][0-9]{2}:[0-9]{2}|Z)$"
98            },
99            "duration": {
100              "description": "The file's/segment's duration in nanoseconds",
101              "type": "integer",
102              "minimum": 0
103            },
104            "is_providing_timestamps": {
105              "description": "States whether or not the container has timestamps for the packets (e.g. Matroska, MP4) or not (e.g. SRT, MP3)",
106              "type": "boolean"
107            },
108            "muxing_application": {
109              "description": "A Unicode string containing the name and possibly version of the low-level library or application that created the file",
110              "type": "string"
111            },
112            "next_segment_uid": {
113              "description": "A hexadecimal string of the next segment's UID (only for Matroska files)",
114              "type": "string",
115              "minLength": 32,
116              "maxLength": 32
117            },
118            "other_file": {
119              "description": "An array of names of additional files processed as well",
120              "type": "array",
121              "items": {
122                "type": "string"
123              }
124            },
125            "playlist": {
126              "description": "States whether or not the identified file is a playlist (e.g. MPLS) referring to several other files",
127              "type": "boolean"
128            },
129            "playlist_chapters": {
130              "description": "The number of chapters in a playlist if it is a one",
131              "type": "integer",
132              "minimum": 0
133            },
134            "playlist_duration": {
135              "description": "The total duration in nanoseconds of all files referenced by the playlist if it is a one",
136              "type": "integer",
137              "minimum": 0
138            },
139            "playlist_file": {
140              "description": "An array of file names the playlist contains",
141              "type": "array",
142              "items": {
143                "type": "string"
144              }
145            },
146            "playlist_size": {
147              "description": "The total size in bytes of all files referenced by the playlist if it is a one",
148              "type": "integer",
149              "minimum": 0
150            },
151            "previous_segment_uid": {
152              "description": "A hexadecimal string of the previous segment's UID (only for Matroska files)",
153              "type": "string",
154              "minLength": 32,
155              "maxLength": 32
156            },
157            "programs": {
158              "description": "A container describing multiple programs multiplexed into the source file, e.g. multiple programs in one DVB transport stream",
159              "type": "array",
160              "items": {
161                "additionalProperties": false,
162                "description": "Properties describing a single program",
163                "type": "object",
164                "properties": {
165                  "program_number": {
166                    "description": "A unique number identifying a set of tracks that belong together; used e.g. in DVB for multiplexing multiple stations within a single transport stream",
167                    "type": "integer",
168                    "minimum": 0
169                  },
170                  "service_name": {
171                    "description": "The name of a service provided by this program, e.g. a TV channel name such as 'arte HD'",
172                    "type": "string"
173                  },
174                  "service_provider": {
175                    "description": "The name of the provider of the service provided by this program, e.g. a TV station name such as 'ARD'",
176                    "type": "string"
177                  }
178                }
179              }
180            },
181            "segment_uid": {
182              "description": "A hexadecimal string of the segment's UID (only for Matroska files)",
183              "type": "string",
184              "minLength": 32,
185              "maxLength": 32
186            },
187            "title": {
188              "type": "string"
189            },
190            "writing_application": {
191              "description": "A Unicode string containing the name and possibly version of the high-level application that created the file",
192              "type": "string"
193            }
194          },
195          "additionalProperties": false
196        },
197        "recognized": {
198          "description": "States whether or not mkvmerge knows about the format",
199          "type": "boolean"
200        },
201        "supported": {
202          "description": "States whether or not mkvmerge can read the format",
203          "type": "boolean"
204        },
205        "type": {
206          "description": "A human-readable description/name for the container format",
207          "type": "string",
208          "minLength": 1
209        }
210      },
211      "additionalProperties": false,
212      "required": [
213        "recognized",
214        "supported"
215      ]
216    },
217    "errors": {
218      "type": "array",
219      "items": {
220        "type": "string"
221      }
222    },
223    "file_name": {
224      "description": "the identified file's name",
225      "type": "string",
226      "minLength": 1
227    },
228    "global_tags": {
229      "type": "array",
230      "items": {
231        "additionalProperties": false,
232        "type": "object",
233        "properties": {
234          "num_entries": {
235            "type": "integer"
236          }
237        },
238        "additionalProperties": false,
239        "required": [
240          "num_entries"
241        ]
242      }
243    },
244    "identification_format_version": {
245      "description": "The output format's version",
246      "type": "integer",
247      "minimum": 11,
248      "maximum": 11
249    },
250    "track_tags": {
251      "type": "array",
252      "items": {
253        "additionalProperties": false,
254        "type": "object",
255        "properties": {
256          "num_entries": {
257            "type": "integer"
258          },
259          "track_id": {
260            "type": "integer"
261          }
262        },
263        "additionalProperties": false,
264        "required": [
265          "num_entries",
266          "track_id"
267        ]
268      }
269    },
270    "tracks": {
271      "type": "array",
272      "items": {
273        "additionalProperties": false,
274        "type": "object",
275        "properties": {
276          "codec": {
277            "type": "string",
278            "minLength": 1
279          },
280          "id": {
281            "type": "integer",
282            "minLength": 0
283          },
284          "type": {
285            "type": "string"
286          },
287          "properties": {
288            "additionalProperties": false,
289            "type": "object",
290            "properties": {
291              "aac_is_sbr": {
292                "type": "string",
293                "enum": [
294                  "true",
295                  "false",
296                  "unknown"
297                ]
298              },
299              "audio_bits_per_sample": {
300                "type": "integer",
301                "minimum": 0
302              },
303              "audio_channels": {
304                "type": "integer",
305                "minimum": 0
306              },
307              "audio_sampling_frequency": {
308                "type": "integer",
309                "minimum": 0
310              },
311              "codec_delay": {
312                "type": "integer"
313              },
314              "codec_id": {
315                "type": "string"
316              },
317              "codec_private_data": {
318                "type": "string"
319              },
320              "codec_private_length": {
321                "type": "integer",
322                "minimum": 0
323              },
324              "content_encoding_algorithms": {
325                "type": "string",
326                "minLength": 1
327              },
328              "default_duration": {
329                "type": "integer",
330                "minimum": 0
331              },
332              "default_track": {
333                "type": "boolean"
334              },
335              "display_dimensions": {
336                "type": "string",
337                "pattern": "^[0-9]+x[0-9]+$"
338              },
339              "display_unit": {
340                "type": "integer",
341                "minimum": 0
342              },
343              "enabled_track": {
344                "type": "boolean"
345              },
346              "encoding": {
347                "description": "The encoding/character set of a track containing text (e.g. subtitles) if it can be determined with confidence. For such tracks the encoding cannot be changed by the user.",
348                "type": "string"
349              },
350              "forced_track": {
351                "type": "boolean"
352              },
353              "language": {
354                "type": "string"
355              },
356              "minimum_timestamp": {
357                "description": "The minimum timestamp in nanoseconds of all the frames of this track found within the first couple of seconds of the file",
358                "type": "integer",
359                "minimum": 0
360              },
361              "multiplexed_tracks": {
362                "description": "An array of track IDs indicating which tracks were originally multiplexed within the same track in the source file",
363                "type": "array",
364                "items": {
365                  "type": "integer",
366                  "minimum": 0
367                }
368              },
369              "number": {
370                "type": "integer",
371                "minimum": 0
372              },
373              "packetizer": {
374                "type": "string",
375                "minLength": 1
376              },
377              "pixel_dimensions": {
378                "type": "string",
379                "pattern": "^[0-9]+x[0-9]+$"
380              },
381              "program_number": {
382                "description": "A unique number identifying a set of tracks that belong together; used e.g. in DVB for multiplexing multiple stations within a single transport stream",
383                "type": "integer",
384                "minimum": 0
385              },
386              "stereo_mode": {
387                "type": "integer",
388                "minimum": 0
389              },
390              "stream_id": {
391                "description": "A format-specific ID identifying a track, possibly in combination with a 'sub_stream_id' (e.g. the program ID in an MPEG transport stream)",
392                "type": "integer",
393                "minimum": 0
394              },
395              "sub_stream_id": {
396                "description": "A format-specific ID identifying a track together with a 'stream_id'",
397                "type": "integer",
398                "minimum": 0
399              },
400              "tag_artist": {
401                "type": "string"
402              },
403              "tag_bitsps": {
404                "type": "string"
405              },
406              "tag_bps": {
407                "type": "string"
408              },
409              "tag_fps": {
410                "type": "string"
411              },
412              "tag_title": {
413                "type": "string"
414              },
415              "teletext_page": {
416                "type": "integer",
417                "minimum": 0
418              },
419              "text_subtitles": {
420                "type": "boolean"
421              },
422              "track_name": {
423                "type": "string"
424              },
425              "uid": {
426                "type": "integer",
427                "minimum": 0
428              }
429            },
430            "additionalProperties": false
431          }
432        },
433        "additionalProperties": false,
434        "required": [
435          "codec",
436          "id",
437          "type"
438        ]
439      }
440    },
441    "warnings": {
442      "type": "array",
443      "items": {
444        "type": "string"
445      }
446    }
447  }
448}
449