Javascript Opus Encoder/Decoder, Speexdsp based Resampler and WebAudio Player Sample
TypeScript HTML Makefile
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
native
typings
.gitignore
.gitmodules
COPYING
Makefile
README.md
api.d.ts
impl.ts
index.html
microphone.ts
opus_decoder.ts
opus_encoder.ts
player.ts
resampler.ts
riff_pcm_wave.ts
ring_buffer.ts
speex_resampler.ts
test.ts

README.md

libopus.js

非可逆音声符号形式であるOpusのJavaScript実装と, Webブラウザを用いてOpusのエンコード・デコードを行うサンプルです.

TypeScriptで記述しています.

Demo: https://kazuki.github.io/opus.js-sample/index.html

詳細

OpusのJavaScript実装は,Xiph.org Foundationによる Opusの実装Emscriptenを使ってコンパイルしたものです.

Webブラウザを用いてOpusのエンコード・デコードを行うサンプルでは, ローカルに保存してあるRIFF PCM Waveファイルを再生したり, そのファイルを利用して,エンコード速度・デコード速度を測定するほか, エンコード結果をデコードし,その結果を再生することが出来ます.

このエンコード・デコード機能のサンプルでは, WebWorkerを利用し別スレッドでエンコード・デコード処理を行うため, ブラウザの他の処理に影響を与えません. また,Opusのデコード負荷がそれほど高くないことと, Emscriptenが出力するasm.jsは高速に動作するため,スマートフォン上でもOpusのリアルタイムデコードが可能です.

Opusは限られたサンプリングレートにしか対応しておらず, また,WebAudioのAudioContextは環境に依存したサンプリングレートでしか動作しないため, このサンプルではSpeexのリサンプラーを利用してサンプリングレートを合わせています.

各種バージョン

  • opus: master (3a1dc9dc, Tue Aug 4 15:24:21 2015 -0400)
  • speexdsp: 1.2rc3 (887ac103, Mon Dec 15 01:27:40 2014 -0500)
  • emscripten: v1.34.8

ビルド方法

Makefileを用意してありますので,以下のコマンドを実行してください. 事前にemscriptenの各種実行ファイルにパスを通す必要があります. また,opus/speexdspがgcc等を使って普通にビルドできる環境である必要が有ります.

$ git clone --recursive https://github.com/kazuki/opus.js-sample.git
$ cd opus.js-sample
$ make

ライセンス

修正BSDライセンス