This repository contains MediaX SDK, a Node.js/TypeScript library for high-level video/audio/media processing built on ffmpeg.
The project is structured as a monorepo using pnpm workspaces.
mediax-sdk/
├─ example/ # Under development
├─ cli/ # Under development
├─ packages/
│ └─ core/ # Core MediaX SDK package
│ ├─ src/ # Source code (MediaX, Job, Queue, types)
│ ├─ package.json # Core package metadata
│ ├─ tsconfig.json # TypeScript config
│ └─ **tests**/ # Unit tests
├─ pnpm-workspace.yaml # Workspace configuration
└─ README.md # Root-level readme
The main SDK package containing:
MediaXclass: High-level methods for conversion, compression, thumbnail generation, audio extraction, GIF creation, clipping, watermarking, and more.Jobclass: Typed events, real-time progress, automatic duration calculation.Queueclass: Concurrency-controlled job queue for production pipelines.types: TypeScript definitions for all jobs and events.
- Clone the repository:
git clone https://github.com/ksaurav24/mediax.git
cd mediax- Install dependencies with
pnpm:
pnpm install- Build the core package:
pnpm --filter @mediax/core build- Run tests:
pnpm --filter @mediax/core testimport { MediaX, Queue } from "@mediax/core";
const mx = new MediaX();
const job = mx.convert("input.mp4", "output.mkv");
job.on("progress", p => console.log(`Progress: ${p.percent?.toFixed(1)}%`));
job.on("done", output => console.log("Done:", output));
job.start();
// Queue example
const queue = new Queue(2);
queue.add(mx.compress("input1.mp4", "out1.mp4"));
queue.add(mx.toGif("input2.mp4", "out2.gif"));
queue.on("empty", () => console.log("All jobs completed"));- The project uses pnpm workspaces to manage packages.
ffmpegandffprobeare automatically configured via@ffmpeg-installer/ffmpegand@ffprobe-installer/ffprobe.- All events are typed for TypeScript.
- Supports production pipelines with queues and concurrent jobs.
- Fork the repository.
- Create a feature branch.
- Add tests for any new functionality.
- Submit a pull request.
MIT License – see LICENSE for details.