Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

    opus-encodepublic

    opus-encode

    Encode audio buffer streams to ogg opus. AFAIK, this only works in the browser.

    Installation

    npm install --save opus-encode
    

    Usage

    var concat = require('concat-stream');
    var encode = require('opus-encode');
    var stream = require('stream');
    
    // request an audio file
    var req = new XMLHttpRequest();
    req.open('GET', '/path/to/file.wav', true);
    req.responseType = 'arraybuffer';
    
    req.onload = function () {
      var res = req.response;
      var ctx = new AudioContext();
    
      // decode the file to audio buffers
      ctx.decodeAudioData(res, function (buf) {
        var audio = new stream.Readable({objectMode: true});
    
        // convert the audio buffers to an object stream
        audio._read = function () {
          this.push(buf);
          this.push(null);
        };
    
        // create a stream that concats all encoded data
        var doSomething = concat(function (buf) {
          // this blob contains the ogg opus encoded audio
          var blob = new Blob([buf.toArrayBuffer()]);
        });
    
        audio.pipe(encode()).pipe(doSomething);
      });
    };
    
    req.send();
    

    Disclaimer

    I don't pretend to understand how the encoder actually works. I modified the encoder written by chris-rudmin in his fork of RecordJS.

    Tests

    In order to run tests in the browser make sure you open your browser with the following flag:

    --allow-file-access-from-files
    

    install

    npm i opus-encode

    Downloadsweekly downloads

    12

    version

    2.0.2

    license

    Unlicense

    repository

    githubgithub

    last publish

    collaborators

    • avatar