wave.ffmpeg
v1.0.0
Published
FFmpeg Node.js Wrapper
Downloads
4
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.ffmpeg
FFmpeg
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 seconds
FFprobe
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/ffmpeg
with the actual path if needed. - Ensure to mention any specific requirements or dependencies in the
Installation
section if applicable. - The
mediaDuration
in theFFmpeg
example should be calculated using theFFprobe
class or known beforehand.
Changelog
v1.0.0 (2024-08-19)
- First public release of the library