JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 60
  • Score
    100M100P100Q61056F
  • License MIT

Emscripten bindings for libopus. Encode / Decode your audio to opus with pure JS.

Package Exports

  • cjopus

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (cjopus) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

CJOpus

Emscripten (C++/JavaScript) bindings for libopus

A module to encode PCM data to and decode PCM data from Opus.

Using

The lib folder includes a pre-compiled version. Requiring the Opus.js entrypoint file should be enough.

OpusEncoder

//Tries to mimic `node-opus` in syntax.
var encoder = new OpusEncoder( 48000, 2 );

OpusEncoder#encode(Buffer/TypedArray/Array)

var PCM = getPCMDataSomehow();
var encoded = encoder.encode( PCM );

OpusEncoder#decode(Buffer/TypedArray/Array)

var OPUS = getOPUSDataSomehow();
var decoded = encoder.decode( OPUS );

OpusEncoder#encodeUnsafe / OpusEncoder#decodeUnsafe

These two methods work just like the safe versions, however they don't do any error checking and they use .subarray() instead of .slice(). Because of this, it's a bit faster. It's relatively safe to use, just know that if an encoding error happens, it will return an empty Uint8Array (encode) or Int16Array (decode).

OpusEncoder#destroy()

encoder.destroy();

Since this is an Emscripten module (that also has to malloc), the memory also needs to be freed manually when finished. It's a small program, perhaps under 30KB of dynamically allocated memory, but that can add up.

Building

The required packages for building (under Debian-based distros) are:

  • git
  • build-essential
  • libtool
$ git clone --recursive https://github.com/izy521/CJOpus.git
$ cd CJOpus
$ make