在nodejs中获取视频分辨率

时间:2015-08-10 16:39:53

标签: node.js video ffmpeg resolution

我一直试图在没有找到任何答案的情况下得到答案。如果这听起来很愚蠢或明显,请原谅。

我有一个nodejs应用程序,基本上我想简单地获得视频的分辨率。想象一下,我将电影存储在磁盘上,我希望能够知道它是720p还是1080p或其他任何东西。

我明白我可能需要使用ffmpeg这样做,但后来我也明白ffmpeg主要用于“录制,转换和流式处理音频和视频文件”。 这并不意味着检索视频分辨率。

感谢您的帮助

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

5 个答案:

答案 0 :(得分:5)

老实说,我认为我找到的最佳方法是使用fluent-ffmpeg和ffprobe,因为您可以设置可执行文件的路径。唯一的问题是ffmpeg必须随应用程序一起提供。因此必须提供不同的可执行文件,每个分发/ os /派生一个。如果有人有更好的东西,我愿意接受答案。

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

答案 1 :(得分:1)

执行此操作的一种方法是将另一个应用程序作为子进程运行,并从std中获取解决方案。我不知道任何纯粹的node.js解决方案。

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

child_process.exec How can I get the resolution (width and height) for a video file from a linux command line?

答案 2 :(得分:1)

我使用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
});

答案 3 :(得分:1)

有一个名为get-video-dimensionsnpm软件包也使用ffprobe,使用起来更容易。它还支持promises和async / await。

import getDimensions from 'get-video-dimensions';

使用承诺

getDimensions('video.mp4').then(dimensions => {
  console.log(dimensions.width);
  console.log(dimensions.height);
})

异步/等待

const dimensions = await getDimensions('video.mp4');
console.log(dimensions.width);
console.log(dimensions.height);

答案 4 :(得分:1)

fileMetaData 将具有宽度,高度,编解码器信息,长宽比等...

const ffprobe = require('ffprobe')
const ffprobeStatic = require('ffprobe-static')
const fileMetaData = await ffprobe(fileName, { path: ffprobeStatic.path })
  

fileName可以是视频(“ webm”,“ mov”,“ wmv”,“ mpg”,“ mpeg”,“ mp4”,“ flv”等)或图像(jpg,gif,png等)。 )路径。   fileName示例:/path/to/video.mp4或http://example.com/video.mp4