mux.js
Lightweight utilities for inspecting and manipulating video container formats.
Maintenance Status: Stable
Diagram
MPEG2-TS to fMP4 Transmuxer
Feed in Uint8Array
s of an MPEG-2 transport stream, get out a fragmented MP4:
var transmuxer = new muxjs.mp4.Transmuxer(initOptions);
transmuxer.on('data', function (segment) {
sourceBuffer.appendBuffer(segment.data.buffer);
});
Metadata
The transmuxer can also parse out supplementary video data like timed ID3 metadata and CEA-608 captions.
You can find both attached to the data event object:
transmuxer.on('data', function (segment) {
segment.metadata.frames.forEach(function(frame) {
metadataTextTrack.addCue(new VTTCue(time, time, frame.value));
});
segment.captions.forEach(function(cue) {
captionTextTrack.addCue(new VTTCue(cue.startTime, cue.endTime, cue.text));
});
});
MP4 Inspector
Parse MP4s into javascript objects or a text representation for display or debugging:
var parsed = muxjs.mp4.tools.inspect(bytes);
console.log('The major brand of the first box:', parsed[0].majorBrand);
document.body.appendChild(document.createTextNode(muxjs.textifyMp4(parsed)));
The MP4 inspector is used extensively as a debugging tool for the transmuxer. You can see it in action by cloning the project and opening the debug page in your browser.
Building
If you're using this project in a node-like environment, just
require() whatever you need. If you'd like to package up a
distribution to include separately, run npm run build
. See the
package.json for other handy scripts if you're thinking about
contributing.
Collaborator
If you are a collaborator, we have a guide on how to release the project.