我在 NodeJS 中使用 node-fluent-ffmpeg 模块。fluent-ffmpeg 提供了获取视频和音频文件元数据的功能非常好。
https://github.com/schaermu/node-fluent-ffmpeg#reading-video-metadata
我曾尝试在 Mac OS 上使用元数据中的“分辨率”属性来判断文件是纯音频还是视频,即如果 resolution.w 和 resolution.h 均为 0,则该文件是音频。这在 Mac OS 上运行良好。但是发生了一些奇怪的事情,这在使用最新 ffmpeg 的 Windows 平台(我尝试过 Windows 7 64bit 和 Windows 2008)上不起作用。即使我通过 fluent-ffmpeg 放置了一个 .mp3 文件,结果看起来像这样:
video:
{
container:'mp3',
...
resolution: {w:300,h:300},
resolutionSquare: {w:300,h:300},
aspectString: '1:1',
...
}
audio:
{
codec:'mp3',
bitrate:64,
sample_rate:44100,
stream:0,
channels:1
}
我不是为什么会有“分辨率”,因为它是一个纯音频文件。那么有什么可靠的方法可以从元数据中找出文件是纯音频还是视频?或者我应该使用 ffmpeg 命令行来找出它?