Git Product home page Git Product logo

libvorbis.js's Introduction

libvorbis.js

What it is

This spits out a javascript file that can be used in the browser to convert PCM audio data to compressed ogg vorbis audio.

Install

bower install libvorbis.js

Download

See releases.

Build

Requirements

  • emscripten compiler
  • TypeScript 1.5+ compiler (npm install -g typescript)
  • uglifyjs (npm install -g uglifyjs)

Instructions

git submodule init
git submodule update
./build.sh

Demos

Microphone recorder.

API

declare module libvorbis {
    interface OggVbrEncoderOptions {
        channels: number;
        sampleRate: number;
        quality: number;
    }
    
    class OggVbrEncoder {
        constructor(module: OggVbrModule, options: OggVbrEncoderOptions);
        
        static create(options: OggVbrEncoderOptions): Promise<OggVbrEncoder>;
        
        /**
         * Performs a encoding step on the provided PCM channel data.
         * It may or may not produce an output ArrayBuffer.
         *
         * @param channelData An array of PCM data buffers (one for each channel).
         */
        encode(channelData: Float32Array[]): ArrayBuffer;
        
        /**
         * Finalizes the OGG Vorbis stream.
         * It may or may not produce an output ArrayBuffer.
         */
        finish(): ArrayBuffer;
    }
    
    interface OggVbrAsyncEncoderOptions {
        workerURL: string;
        moduleURL: string;
        encoderOptions: OggVbrEncoderOptions;
    }
    
    class OggVbrAsyncEncoder {
        /**
         * Call static method create() to instantiate this class!
         */
        constructor(worker: Worker, onData: (data: ArrayBuffer) => void, onFinished: () => void);
        
        static create(options: OggVbrAsyncEncoderOptions,
                      onData: (data: ArrayBuffer) => void,
                      onFinished: () => void): Promise<OggVbrAsyncEncoder>;
        
        /**
         * Performs a encoding step on the provided PCM channel data.
         *
         * @param channelData An array of PCM data buffers (one for each channel).
         */
        encode(channelData: Float32Array[]): void;
        
        /**
         * Performs a encoding step on the provided PCM channel data.
         * Warning: passed buffers will be transferred to the Worker, rendering
         * them unusable from this thread.
         *
         * @param channelData An array of PCM data buffers (one for each channel).
         */
        encodeTransfer(channelData: Float32Array[]): void;
        
        /**
         * Finalizes the OGG Vorbis stream.
         */
        finish(): void;
    }
}

Credits

libvorbis.js's People

Contributors

garciat avatar devongovett avatar itsjoesullivan avatar shovon avatar

Watchers

James Cloos avatar Paul Wade avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.