simple ffprobe wrapper
npm install @dropb/ffprobe
// This is a hybrid module that can be loaded with import
import { ffprobe, ffprobeSync } from '@dropb/ffprobe';
// or require()
// const { ffprobe, ffprobeSync } = require('@dropb/ffprobe');
// optional: specify the ffprobe path
import { path as ffprobePath } from 'ffprobe-static';
ffprobe.path = ffprobePath;
// or
// process.env.FFPROBE_PATH = ffprobePath;
// async/await
async function run() {
try {
// file
const data = await ffprobe('./testfile.mp4');
console.log(data.format.duration);
} catch (e) {
console.error(e);
}
try {
// URL
const { streams } = await ffprobe('http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4');
console.log(streams[0].width);
} catch (e) {
console.error(e);
}
try {
// Readable Stream
const { format } = await ffprobe(createReadStream('./testfile.mp4'));
console.log(format.duration);
} catch (e) {
console.error(e);
}
}
run();
// node-style callback
ffprobe('./testfile.mp4', (err, data) => {
if (err) {
console.error(err);
} else {
console.log(data.format.duration);
}
});
// sync
const data = ffprobeSync('./testfile.mp4');
console.log(data.format.duration);
/**
* Run ffprobe on specified input
* @param input FilePath / URL / Readable Stream
*/
function ffprobe(input: string | Stream): Promise<FfprobeData>;
function ffprobe(input: string | Stream, cb: FfprobeCallback): void;
interface FfprobeData