ffprobe
v1.1.2
Published
Use ffprobe to get info from media files and return as JSON
Downloads
73,201
Maintainers
Readme
ffprobe
Use ffprobe to get info from media files and return as JSON
Installation
This module is installed via npm:
$ npm install ffprobe
Example Usage
ffprobe
is a dual API, supporting both node.js callbacks AND Promise
s.
Callback API
List the output of ffprobe for a media file in a convenient JSON format:
var ffprobe = require('ffprobe'),
ffprobeStatic = require('ffprobe-static');
ffprobe('./file.mp4', { path: ffprobeStatic.path }, function (err, info) {
if (err) return done(err);
console.log(info);
/***
{
"streams": [
{
"index": 0,
"codec_name": "h264",
"codec_long_name": "H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10",
"profile": "High",
"codec_type": "video",
"codec_time_base": "1/50",
"codec_tag_string": "avc1",
"codec_tag": "0x31637661",
"width": 1280,
"height": 720,
"coded_width": 1280,
"coded_height": 720,
"has_b_frames": 0,
"sample_aspect_ratio": "1:1",
"display_aspect_ratio": "16:9",
"pix_fmt": "yuv420p",
"level": 31,
"chroma_location": "left",
"refs": 1,
"is_avc": "1",
"nal_length_size": "4",
"r_frame_rate": "25/1",
"avg_frame_rate": "25/1",
"time_base": "1/25",
"start_pts": 0,
"start_time": "0.000000",
"duration_ts": 299,
"duration": "11.960000",
"bit_rate": "1031739",
"bits_per_raw_sample": "8",
"nb_frames": "299",
"disposition": {
"default": 1,
"dub": 0,
"original": 0,
"comment": 0,
"lyrics": 0,
"karaoke": 0,
"forced": 0,
"hearing_impaired": 0,
"visual_impaired": 0,
"clean_effects": 0,
"attached_pic": 0
},
"tags": {
"language": "und",
"handler_name": "VideoHandler"
}
},
{
"index": 1,
"codec_name": "aac",
"codec_long_name": "AAC (Advanced Audio Coding)",
"profile": "LC",
"codec_type": "audio",
"codec_time_base": "1/44100",
"codec_tag_string": "mp4a",
"codec_tag": "0x6134706d",
"sample_fmt": "fltp",
"sample_rate": "44100",
"channels": 2,
"channel_layout": "stereo",
"bits_per_sample": 0,
"r_frame_rate": "0/0",
"avg_frame_rate": "0/0",
"time_base": "1/44100",
"start_pts": 0,
"start_time": "0.000000",
"duration_ts": 528384,
"duration": "11.981497",
"bit_rate": "192287",
"max_bit_rate": "203120",
"nb_frames": "516",
"disposition": {
"default": 1,
"dub": 0,
"original": 0,
"comment": 0,
"lyrics": 0,
"karaoke": 0,
"forced": 0,
"hearing_impaired": 0,
"visual_impaired": 0,
"clean_effects": 0,
"attached_pic": 0
},
"tags": {
"creation_time": "2015-11-16 00:48:42",
"language": "eng",
"handler_name": "IsoMedia File Produced by Google, 5-11-2011"
}
}
]
}
**/
});
Promise API
List the output of ffprobe for a media file in a convenient JSON format:
var ffprobe = require('ffprobe'),
ffprobeStatic = require('ffprobe-static');
ffprobe('./file.mp4', { path: ffprobeStatic.path })
.then(function (info) {
console.log(info);
/***
{
"streams": [
{
"index": 0,
"codec_name": "h264",
"codec_long_name": "H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10",
"profile": "High",
...
}
}
]
}
**/
})
.catch(function (err) {
console.error(err);
})
});
API
ffprobe(mediaFilePath, opts, [cb])
mediaFilePath
- path to your audio / video / image that you want to get media info for.opts
- options object with the following options:path
- path to ffprobe binary (You can useffprobe-static
to easily get a static binary that you can install with npm.
cb(err, info)
- standard callback, with the info returned as a javascript object. NB: If thecb
parameter is not provided, aPromise
will be returned allowing chainedthen()
,catch()
methods.