Saltar al contenido

HTML5 leer metadatos de video de mp4

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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *