wave.ffmpeg
v1.0.0
Published
FFmpeg Node.js Wrapper
Readme
FFmpeg & FFprobe Wrapper
This Node.js module provides a wrapper around FFmpeg and FFprobe to process media files, track the progress of the conversion, and retrieve media metadata.
Usage
Here's an example of how to use this wrapper to execute FFmpeg commands:
const { FFmpeg, FFprobe } = require("wave.ffmpeg");
new FFmpeg()
.appendOption(
"-i", "input.mp4",
"-c:v" "copy",
"-c:v", "copy",
"-vf", "scale=640:480",
"output.mp4"
)
.on("progress", (progress) => {
console.log(`${progress.percent.toFixed(1)}% | ${Math.floor(progress.remaining / 3600)}h ${Math.floor(progress.remaining / 60 % 60)}min ${Math.floor(progress.remaining % 60)}s`);
})
.on("end", () => {
console.log("Conversion complete!");
})
.on("error", (error) => {
console.error("Error occurred:", error);
})
.run(await (new FFprobe().getMediaDuration("input.mp4")));Features
- FFmpeg: Allows running FFmpeg commands and emits progress events.
- FFprobe: Fetches media duration using FFprobe.
Installation
Before using this package, ensure that FFmpeg and FFprobe are installed on your system and accessible from your PATH.
To install the package:
npm install wave.ffmpegFFmpeg
The FFmpeg class is used to run FFmpeg commands and track the progress of media processing.
Exemple
const { FFmpeg } = require("wave.ffmpeg");
const ffmpeg = new FFmpeg();
ffmpeg.setFFmpegPath("/path/to/ffmpeg"); // Optional: Set the path to the ffmpeg executable
ffmpeg.appendOption("-i", "input.mp4", "-c:v", "libx264", "output.mp4");
ffmpeg.on("progress", (progress) => {
console.log(`Progress: ${progress.percent.toFixed(2)}%`);
console.log(`Remaining time: ${progress.remaining.toFixed(2)} seconds`);
});
ffmpeg.on("end", () => {
console.log("Processing finished.");
});
ffmpeg.on("error", (error) => {
console.error("Error occurred:", error);
});
ffmpeg.run(mediaDuration); // mediaDuration should be in secondsFFprobe
The FFprobe class is used to fetch media metadata such as the duration.
const { FFprobe } = require("wave.ffmpeg");
const ffprobe = new FFprobe();
ffprobe.setFFprobePath("/path/to/ffprobe"); // Optional: Set the path to the ffprobe executable
ffprobe.getMediaDuration("input.mp4")
.then((duration) => {
console.log(`Duration: ${duration} seconds`);
})
.catch((error) => {
console.error("Error fetching duration:", error);
});Acknowledgments
This project uses FFmpeg and FFprobe, which are powerful open-source tools for handling multimedia data.
Additional Notes:
- Replace placeholders such as
/path/to/ffmpegwith the actual path if needed. - Ensure to mention any specific requirements or dependencies in the
Installationsection if applicable. - The
mediaDurationin theFFmpegexample should be calculated using theFFprobeclass or known beforehand.
Changelog
v1.0.0 (2024-08-19)
- First public release of the library
