Obtener resolución de video en nodejs

He estado tratando de obtener una respuesta a esto sin encontrar realmente ninguna. Disculpe si esto suena estúpido o obvio.

Tengo una aplicación de nodejs y básicamente me gustaría obtener la resolución de un video. Imagínese que tengo una película almacenada en el disco y me gustaría poder saber si está en 720p o 1080p o cualquier otra cosa.

Comprendí que podría necesitar usar ffmpeg para hacerlo, pero también entendí que ffmpeg se usaba principalmente para “grabar, convertir y transmitir archivos de audio y video”. Eso no significa recuperar la resolución de video.

Gracias por tu ayuda

Edición 1: la aplicación node.js es una aplicación de escritorio y debe ser portátil a Linux, Windows y OS X. Si es posible, una respuesta portátil sería más apreciada pero, por supuesto, cualquier respuesta es bienvenida.

Para ser honesto, creo que el mejor método que encontré fue usar fluent -ffmpeg con ffprobe, ya que puedes establecer la ruta del ejecutable. El único problema es que ffmpeg se debe enviar con la aplicación. Por lo tanto, se deben enviar diferentes ejecutables, uno para cada distribución / os / derivación. Si alguien tiene algo mejor estoy abierto a las respuestas.

Obtener el ancho, el alto y la relación de aspecto usando fluent-ffmpeg se hace así:

var ffmpeg = require('fluent-ffmpeg'); ffmpeg.setFfprobePath(pathToFfprobeExecutable); ffmpeg.ffprobe(pathToYourVideo, function(err, metadata) { if (err) { console.error(err); } else { // metadata should contain 'width', 'height' and 'display_aspect_ratio' console.log(metadata); } }); 

Una forma de hacer esto sería ejecutar otra aplicación como un proceso secundario y obtener la resolución desde el estándar. No tengo conocimiento de ninguna solución de node.js pura para esto.

Consulte child_process.exec https://nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback

y ffprobe ¿Cómo puedo obtener la resolución (ancho y alto) para un archivo de video desde una línea de comandos de linux?

Yo uso node-ffprobe para lograr esto para las imágenes:

 var probe = require('/usr/lib/node_modules/node-ffprobe'); probe(filePath, function (err, data) { //the 'data' variable contains the information about the media file });