UNPKG

ogg

Version:
96 lines (66 loc) 3.1 kB
node-ogg ======== ### Node.js native binding to libogg [![Build Status](https://travis-ci.org/TooTallNate/node-ogg.svg?branch=master)](https://travis-ci.org/TooTallNate/node-ogg) [![Build Status](https://ci.appveyor.com/api/projects/status/hoc58iw51lr5fdjg/branch/master?svg=true)](https://ci.appveyor.com/project/TooTallNate/node-ogg/branch/master) This module provides a Writable stream interface for decoding `ogg` files, and a Readable stream for encoding `ogg` files. `libogg` only provides the interfaces for multiplexing the various streams embedding into an ogg file (and vice versa), therefore this module is intended to be used in conjunction with a `node-ogg`-compatible stream module, like `node-vorbis` and `node-theora`. Installation ------------ `node-ogg` comes bundled with its own copy of `libogg`, so there's no need to have the library pre-installed on your system. Simply compile and install `node-ogg` using `npm`: ``` bash $ npm install ogg ``` __NOTE:__ `node-ogg` requires to be built using `node-gyp` v0.8.0 or newer! Example ------- Here's an example of using the `Decoder` class and simply listening for the raw events and `console.log()`s information about each "packet" emitted from each ogg stream: ``` javascript var fs = require('fs'); var ogg = require('ogg'); var file = __dirname + '/Hydrate-Kenny_Beltrey.ogg'; var decoder = new ogg.Decoder(); decoder.on('stream', function (stream) { console.log('new "stream":', stream.serialno); // emitted for each `ogg_packet` instance in the stream. stream.on('data', function (packet) { console.log('got "packet":', packet.packetno); }); // emitted after the last packet of the stream stream.on('end', function () { console.log('got "end":', stream.serialno); }); }); // pipe the ogg file to the Decoder fs.createReadStream(file).pipe(decoder); ``` See the `examples` directory for some more example code. API --- ### Decoder class The `Decoder` class is a `Writable` stream that accepts an ogg file written to it, and emits "stream" events when a new stream is encountered. The `DecoderStream` instance is a readable stream that outputs `ogg_packet` Buffer instances.encountered, which you are then expected to pass along to a ogg stream decoder. ### Encoder class The `Encoder` class is a `Readable` stream where you are given `EncoderStream` instances and are required to write `ogg_packet`s received from an ogg stream encoder to them in order to create a valid ogg file. OGG Stream Decoders/Encoders ---------------------------- Here's a list of known ogg stream decoders and encoders that are compatible with / depend on `node-ogg`. Please send pull requests for additional modules if you write one. | **Module** | **Decoder?** | **Encoder?** |:--------------------------------:|:------------:|:------------: | [`node-vorbis`][node-vorbis] | ✓ | ✓ | [`node-opus`][node-opus] | ✓ | ✓ [node-vorbis]: https://github.com/TooTallNate/node-vorbis [node-opus]: https://github.com/Rantanen/node-opus