Skip to content

FFMPEG Frame Parser. Easy to use. Without any dependencies

License

Notifications You must be signed in to change notification settings

NiKlimenko/FFParser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FFParser

Parse input stream by frames directly into your code as a buffer.

LIMITATION: this library doesn't work with mp4 video format, due to the fact that mp4 video is not frame-by-frame output to stdout.

Install

npm i ffparser

npm NPM

Example

const FFParser = require('ffparser');
const fs = require("fs");

new FFParser('rtsp://184.72.239.149/vod/mp4:BigBuckBunny_115k.mov')
    .setFrameRate('1/1')
    .setQuality(2)
    .setFrameHandler((frame) => fs.writeFile('image.jpeg', frame, () => {}))
    .run();

This simple command will parse the provided stream at a frame rate of ~ 1 fps and with the highest quality. The resulting frames are saved in a file.
You can try this example in the test directory.

Docs

FFParser(inputPath: string, customArgs?: string[])
inputPath (required) - URL or path to input video stream customArgs (optional) - Custom ffmpeg params. Will override the existing ones.

setFrameRate(frameRate: string): FFParser - setup the output frame rate. NOTE: this works approximately!
frameRate (required) - in format '1/2' means 1 frame per 2 seconds. Defaulr value is 1/1. You cannot specify more than the value of the stream itself

setQuality(quality: number): FFParser - defines the quality of the output JPEG image.
quality (required) - available range from 1 to 31, where a lower value means better quality. Default value is 2

enableLogs(): FFParser - show ffmpeg logs in console

setFrameHandler(fn: FrameHandlerFn): FFParser - setup a callback function which will produce new frames.
fn = (frame: Buffer, info?: FrameInformation) => void
frame - new frame as a buffer
info - frame information

FrameInformation {
    frameNumber: string; // frame number from the beginning of parsing
    fps: string;
    quality: string;
    time: string; // time from the beginning of parsing
}

run(): void - start parsing

How to build

npm run tsc

Will create a build directory with the compiled lib, and test.

About

FFMPEG Frame Parser. Easy to use. Without any dependencies

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published