Skip to content

botraiki/essential-ffmpeg

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Essential FFmpeg

A clean, simple Node.js wrapper for FFmpeg that provides the most essential functions for most people—no bloat, just what you actually need. Promise-based API with async/await, no external dependencies, and built-in progress tracking.

Prerequisites

FFmpeg must be installed on your system.

OS Command
macOS brew install ffmpeg
Ubuntu/Debian sudo apt install ffmpeg
Windows Download from ffmpeg.org

Installation

npm install essential-ffmpeg

Documentation

For detailed API documentation, command usage, and configuration options, please see the API Reference.

Quick Start

const { EssentialFFmpeg } = require('essential-ffmpeg');
const ffmpeg = new EssentialFFmpeg();

await ffmpeg.convert('input.mp4', 'output.avi', {
  videoCodec: 'libx264',
  audioCodec: 'aac'
});

Available Methods

Method Description
isAvailable() Check if FFmpeg is installed
getInfo(input) Get media file information
convert(input, output, options) Convert video format
extractAudio(input, output, options) Extract audio from video
extractVideo(input, output, options) Extract video without audio
trim(input, output, options) Trim/cut video
merge(inputs[], output, options) Merge multiple videos
compress(input, output, options) Compress video
addWatermark(video, watermark, output, options) Add watermark to video
generateThumbnail(video, output, options) Generate thumbnail from video
run(args, options) Run custom FFmpeg command

Common Options

{
  videoCodec: 'libx264',      // Video codec
  audioCodec: 'aac',          // Audio codec
  videoBitrate: '1000k',      // Video bitrate
  audioBitrate: '128k',       // Audio bitrate
  fps: 30,                    // Frame rate
  resolution: '1280x720',     // Resolution
  quality: 28,                // CRF (18-28, lower = better)
  preset: 'medium',           // Encoding speed
  overwrite: true             // Overwrite output
}

Presets: ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow

Watermark Positions: top-left, top-right, bottom-left, bottom-right, center

Error Handling

try {
  await ffmpeg.convert('input.mp4', 'output.avi');
} catch (error) {
  console.error('Error:', error.message);
}

Testing

npm test

License

MIT

Releases

No releases published

Packages

No packages published