Detalhes do pacote

ogg

TooTallNate186MIT1.2.6

Node.js native binding to libogg

ogg, libogg, encode, decode

readme (leia-me)

node-ogg

Node.js native binding to libogg

Build Status Build Status

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:

$ 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:

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_packets 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-opus

changelog (log de mudanças)

Version 1.3.0 (2011 August 4)

  • Add ogg_stream_flush_fill() call This produces longer packets on flush, similar to what ogg_stream_pageout_fill() does for single pages.
  • Windows build fixes

Version 1.2.2 (2010 December 07)

  • Build fix (types correction) for Mac OS X
  • Update win32 project files to Visual Studio 2008
  • ogg_stream_pageout_fill documentation fix

Version 1.2.1 (2010 November 01)

  • Various build updates (see SVN)
  • Add ogg_stream_pageout_fill() to API to allow applications greater explicit flexibility in page sizing.
  • Documentation updates including multiplexing description, terminology and API (incl. ogg_packet_clear(), ogg_stream_pageout_fill())
  • Correct possible buffer overwrite in stream encoding on 32 bit when a single packet exceed 250MB.
  • Correct read-buffer overrun [without side effects] under similar circumstances.
  • Update unit testing to work properly with new page spill heuristic.

Version 1.2.0 (2010 March 25)

  • Alter default flushing behavior to span less often and use larger page sizes when packet sizes are large.
  • Build fixes for additional compilers
  • Documentation updates

Version 1.1.4 (2009 June 24)

  • New async error reporting mechanism. Calls made after a fatal error are now safely handled in the event an error code is ignored
  • Added allocation checks useful to some embedded applications
  • fix possible read past end of buffer when reading 0 bits
  • Updates to API documentation
  • Build fixes

Version 1.1.3 (2005 November 27)

  • Correct a bug in the granulepos field of pages where no packet ends
  • New VS2003 and XCode builds, minor fixes to other builds
  • documentation fixes and cleanup

Version 1.1.2 (2004 September 23)

  • fix a bug with multipage packet assembly after seek

Version 1.1.1 (2004 September 12)

  • various bugfixes
  • important bugfix for 64-bit platforms
  • various portability fixes
  • autotools cleanup from Thomas Vander Stichele
  • Symbian OS build support from Colin Ward at CSIRO
  • new multiplexed Ogg stream documentation

Version 1.1 (2003 November 17)

  • big-endian bitpacker routines for Theora
  • various portability fixes
  • improved API documenation
  • RFC 3533 documentation of the format by Silvia Pfeiffer at CSIRO
  • RFC 3534 documentation of the application/ogg mime-type by Linus Walleij

Version 1.0 (2002 July 19)

  • First stable release
  • little-endian bitpacker routines for Vorbis
  • basic Ogg bitstream sync and coding support