I am using node-fluent-ffmpeg module in NodeJS. It is very good that fluent-ffmpeg provides functions to get the metadata of a video and audio file.
https://github.com/schaermu/node-fluent-ffmpeg#reading-video-metadata
I have tried on Mac OS to use the “resolution” attribute in the metadata to tell if a file is audio only or video, i.e. if both resolution.w and resolution.h are 0, then this file is an audio. This work fine on Mac OS. But some strange things happened that this doesn’t work on Windows platform (I have tried Windows 7 64bit and Windows 2008) using the latest ffmpeg. Even though I put a .mp3 file through fluent-ffmpeg,the result looks something like this:
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
}
I am not why there is a “resolution” since it is a pure audio file. So is there any solid way to find out if the file is audio only or video from the metadata? Or should I use ffmpeg commandline to find it out?
I would suggest using ffprobe for this, there’s a nice module for it called node-ffprobe
Hope that helps!