|
Description | | Author |
This object can parse and extract information from MKV video files.
It can take the URL or selected file of a MKV video and read it to parse its information.
The object takes a callback function to handle errors, or if it succeed it calls another callback function passing the parse information in easy to process data structure.
It returns information about the audio and video streams like the format, compatibility, indexation, duration, bitrate, creator, codecs, size, samples, language, frame rate, width height, etc.. Innovation Award
April 2016
Number 5 |
Many sites need to take videos uploaded by the users. When a user uploads a video he may not be certain if that is the right video that he wants to upload and may only realize that after a few hours when the video finishes uploading.
This object is one of several others that can help addressing this issue by being able to parse and extract data from an MP4 video even before the user uploads it. This way the user can confirm if the video was the right was that he wanted to upload.
Other versions of this package exist for parsing MP4 and AVI video files.
Manuel Lemos |
| |
|
|
Innovation award
Nominee: 5x |
|
MKVInfo
Sort of "Mediainfo" for MKV / WebM Files - little MKVParser (just for main technics information about the file)
Dependances : null
Usage :
<script src="MKVInfo.js" type="text/javascript" charset="utf-8"></script>
(in single file .html)
importScripts('MKVInfo.js');
(in worker)
How use it :
mkv(this.files[0], function(err, info) {
if (err) {
.....
} else {
sortie_texte = human_reading(info);
....
}
});
MKVInfo return an object structured (named 'info') wich contains a lot of technicals information about the file.
If we want to read this informations, we need to make them readable. So human_reading is here !
Examples :
for a single file and no worker : index.html
for multiple files and worker : indexw.html
Optimisations ?
Oh Yesssss ! MKVInfo does not calculate the size of each stream because it's too heavy (too slow !).
The main optimisation to do is to use a buffer (in this version MKVInfo use a little buffer of 20 bytes length !)
Try it ?
http://aroug.eu/MKVInfo/ (multiple + worker + use MKVInfo.min.js)
Troubles with Firefox or Internet Explorer ?
Try index.html ! (indexw.html is good with Chrome ^_^ )
WHY ? Because Firefox don't recognize Matroska files (or Webm file) as mime-type = 'video/x-matroska' or 'video/webm' but as mime-type = 'application/force-download' !
Evolutions :
In order to deal with "callbacks hell", I used async/await for clearing code (no more stack troubles :-)
Now, for multiple files, workers do the job with some kind of "parallelism" : gain half time !