Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/NiKlimenko/FFParser
FFMPEG Frame Parser. Easy to use. Without any dependencies
https://github.com/NiKlimenko/FFParser
buffer ffmpeg frame
Last synced: about 1 month ago
JSON representation
FFMPEG Frame Parser. Easy to use. Without any dependencies
- Host: GitHub
- URL: https://github.com/NiKlimenko/FFParser
- Owner: NiKlimenko
- License: mit
- Created: 2019-05-12T14:09:03.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2019-05-26T17:58:25.000Z (over 5 years ago)
- Last Synced: 2024-04-24T13:17:43.563Z (8 months ago)
- Topics: buffer, ffmpeg, frame
- Language: TypeScript
- Homepage:
- Size: 6.84 KB
- Stars: 6
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-ffmpeg - ffparser - Parse input stream by frames directly into your code as a buffer. (JavaScript)
README
# 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
```bash
npm i ffparser
```
![npm](https://img.shields.io/npm/v/ffparser.svg)
![NPM](https://img.shields.io/npm/l/ffparser.svg)## Example
```js
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```js
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
```bash
npm run tsc
```
Will create a build directory with the compiled lib, and test.