isobmff-inspector
The ISOBMFF-inspector is a simple module compatible with Node.js and JavaScript
to facilitates ISOBMFF file parsing.
This is most of all useful for debugging purposes.
You can see it working online through the demo page of the AISOBMFFWVDFBUTFAII
, available here
. AISOBMFFWVDFBUTFAII is
an online ISOBMFF visualizer based on this parser.
Usage
You can install it through npm:
npm install isobmff-inspector
Then you can then directly use the inspector in your JavaScript or Node file:
import inspectISOBMFF from "isobmff-inspector";
const parsed = inspectISOBMFF(MY_ISOBMFF_FILE);
console.log(parsed);
In the previous example, parsed
will have something like the following
structure:
[
{
alias: "styp",
name: "Segment Type Box",
size: 24,
values: [
{
name: "major-brand",
value: "iso6"
},
{
name: "minor_version",
value: 0
},
{
name: "compatible_brands",
value: "iso6, msdh",
}
]
},
{
alias: "moof",
name: "Movie Fragment Box",
size: 788,
children: [
{
alias: "mfhd",
name: "Movie Fragment Header Box",
values: [
{
name: "version",
value: 0
}
{
name: "flags",
value: 0
},
{
name: "sequence_number",
value: 2
}
]
}
]
}
]
Note: You can also add to your page or your console the script defined in
dist/bundle.js
.
You will then have an inspectISOBMFF
function defined which has the same API
as above.
Parsed boxes
The inspector only parses the following ISOBMFF boxes for now:
- dinf
- dref
- edts
- free
- ftyp
- hdlr
- mdat
- mdhd
- mdia
- mehd
- mfhd
- minf
- moof
- moov
- mvex
- mvhd
- pdin
- pssh
- sdtp
- sidx
- skip
- styp
- tfdt
- tfhd
- tkhd
- traf
- trak
- trex
- trun
- url
- urn
- vmhd
I plan to support each one of them but UUIDs (I may add support for some of them
in the future, for example for Smooth Streaming ones).
Contribute
You can help me to add parsing logic for other boxes by updating the
src/boxes
directory.
You can base yourself on already-defined boxes. Each of the parser
functions
there receive a bufferReader
object.
This object is obtained by giving the box's content as an Uint8Array
to the
createBufferReader
function defined and documented in
src/utils/buffer_reader.js
.