Hola, encontramos la respuesta a lo que andabas buscando, has scroll y la obtendrás más abajo.
Solución:
Puedes usar mediainfo.js
, Es una portación de mediainfo
(cpp) en javascript compilado con emsciptem
.
Aquí hay un ejemplo de trabajo: https://mediainfo.js.org/
Deberá incluir el js/mediainfo.js
archivar y poner mediainfo.js.mem
archivo en la misma carpeta.
Debe verificar las fuentes en este archivo para ver cómo funciona: https://mediainfo.js.org/js/mediainfopage.js
[...]
function parseFile(file)
if (processing)
return;
processing = true;
[...]
var fileSize = file.size, offset = 0, state = 0, seekTo = -1, seek = null;
mi.open_buffer_init(fileSize, offset);
var processChunk = function(e)
var l;
if (e.target.error === null)
var chunk = new Uint8Array(e.target.result);
l = chunk.length;
state = mi.open_buffer_continue(chunk, l);
var seekTo = -1;
var seekToLow = mi.open_buffer_continue_goto_get_lower();
var seekToHigh = mi.open_buffer_continue_goto_get_upper();
if (seekToLow == -1 && seekToHigh == -1)
seekTo = -1;
else if (seekToLow < 0)
seekTo = seekToLow + 4294967296 + (seekToHigh * 4294967296);
else
seekTo = seekToLow + (seekToHigh * 4294967296);
if(seekTo === -1)
offset += l;
else
offset = seekTo;
mi.open_buffer_init(fileSize, seekTo);
chunk = null;
else
var msg = 'An error happened reading your file!';
console.err(msg, e.target.error);
processingDone();
alert(msg);
return;
// bit 4 set means finalized
if (state&0x08)
var result = mi.inform();
mi.close();
addResult(file.name, result);
processingDone();
return;
seek(l);
;
function processingDone()
processing = false;
$status.hide();
$cancel.hide();
$dropcontrols.fadeIn();
$fileinput.val('');
seek = function(length)
if (processing)
var r = new FileReader();
var blob = file.slice(offset, length + offset);
r.onload = processChunk;
r.readAsArrayBuffer(blob);
else
mi.close();
processingDone();
;
// start
seek(CHUNK_SIZE);
[...]
// init mediainfo
miLib = MediaInfo(function() {
console.debug('MediaInfo ready');
$loader.fadeOut(function()
$dropcontrols.fadeIn();
window['miLib'] = miLib; // debug
mi = new miLib.MediaInfo();
$fileinput.on('change', function(e)
var el = $fileinput.get(0);
if (el.files.length > 0)
parseFile(el.files[0]);
);
);
Aquí está la dirección de Github con las fuentes del proyecto: https://github.com/buzz/mediainfo.js
No creo que puedas extraer metadatos tan detallados de un video, usando HTML5 y su etiqueta de video. Las únicas cosas que tu poder extracto (duración del video, pistas de video, etc.) se enumeran aquí:
http://www.w3schools.com/tags/ref_av_dom.asp
Por supuesto, puede haber métodos adicionales especiales disponibles en algunos navegadores, pero no existe un enfoque “general”: necesitaría más que los métodos existentes de HTML5.
Agradecemos que desees respaldar nuestro cometido poniendo un comentario o valorándolo te lo agradecemos.