This is not a substitute for the amazing MediaInfo program.
It just parses the headers of a matroska file and return a JSON with the info I deem important.
Feed a matroska (mkv
, mk3d
, mka
, or mks
) file.
/**
* The only function you should care about
* @param {File/Blob} mkFile - The matroska file
*/
mkInputFile(mkFile)
A javascript object is returned.
name
: {string} The name of the file
size
: {integer} The size of the file (in bytes)
duration
: {string} The duration of the file (in nanoseconds)
The differents tracks are in the tracks
object. Always ≥ 1 track(s).
id
: {integer} The identification number of the track = 1 (!)
type
: {string} The type of stream (video
, audio
, subtitle
) = 1 (!)
name
: {string} The name of the track (default = '')
language
: {string} The language of the track using ISO639-2 (default = '')
= 1 (!) for mkv, mk3d
= 0 (!) otherwise
width
: {integer} The width of the video
height
: {integer} The height of the video
≥ 1 (!) for mka
= 0 for mks
≥ 0 otherwise
≥ 1 (!) for mks
≥ 0 otherwise
If you didn't understand the crap above, here is a concrete, human-friendly, example.
Psycho Pass 2 - 01 vostfr
// on a dragdrop event for example
let result = mk.inputFile(e.dataTransfer.files[0]);
// after processing, this should be your output
result = {
name: 'Psycho Pass 2 - 01 vostfr BD [x264_AC3][HI10p][1920x1080].mkv',
size: 857381271, // equals to 818 MiB
UID: <UInt8Array> 0x94858110C7CFC0BBA60A8EBD4DDEBBC0
duration: 1341760000000, // => 00:22:21.760
tracks: [
{
id: 1,
type: 'video',
name: '',
language: 'jpn',
width: 1920,
height: 1080
},
{
id: 2,
type: 'audio',
name: '',
language: 'jpn'
},
{
id: 3,
type: 'subtitle',
name: 'Piste sans honorifiques',
language: 'fra'
},
{
id: 4,
type: 'subtitle',
name: 'Piste avec honorifiques',
language: 'fra'
}
]
}
Anything that supports ECMAScript6.
Firefox, Chrome, IE 11+...
I do not intend to support older browsers. Sorry. Too bad.
Matroska EBML Parser by https://github.com/Phoenix35/mk-parser is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.