在nodejs中获取video分辨率

我一直试图得到一个答案,而没有真正find任何。 对不起,如果这听起来很愚蠢或明显。

我有一个nodejs应用程序,基本上我只想简单地得到一个video的分辨率。 想象一下,我有电影存储在磁盘上,我想能够知道是否在720p或1080p或其他任何东西。

我知道我可能需要使用ffmpeg才能这样做,但是我也明白ffmpeg主要用于“logging,转换和stream式处理audio和video文件”。 这并不意味着检索video分辨率。

感谢您的帮助

编辑1:node.js应用程序是一个桌面应用程序,需要可移植到Linux,Windows和OS X.如果可能的话,一个便携式的答案将更加赞赏,但当然任何答案是值得欢迎的。

说实话,我认为我发现的最好的方法是使用ffprobe的fluent-ffmpeg ,因为您可以设置可执行文件的path。 唯一的问题是,ffmpeg必须随应用程序一起发货。 所以不同的可执行文件必须被发送,每个发行版/操作系统派生一个。 如果有人有什么更好的,我很乐意回答。

使用fluent-ffmpeg获取宽度,高度和高宽比的方法如下:

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); } }); 

一种方法是将另一个应用程序作为subprocess运行,并从std中获取分辨率。 我不知道有任何纯的node.js解决scheme。

请参阅child_process.exec https://nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback

ffprobe 我怎样才能得到从Linux命令行的video文件的分辨率(宽度和高度)?

我使用node-ffprobe来完成这个图像:

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