Skip to content

psirenny/opus-encode

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

#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

About

Encode audio buffer streams to ogg opus.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published