JS bindings for libopus 1.4, ported with Emscripten.
varOpusScript=require("opusscript");// 48kHz sampling rate, 20ms frame duration, stereo audio (2 channels)varsamplingRate=48000;varframeDuration=20;varchannels=2;// Optimize encoding for audio. Available applications are VOIP, AUDIO, and RESTRICTED_LOWDELAYvarencoder=newOpusScript(samplingRate,channels,OpusScript.Application.AUDIO);varframeSize=samplingRate*frameDuration/1000;// Get PCM data from somewhere and encode it into opusvarpcmData=newBuffer(pcmSource);varencodedPacket=encoder.encode(pcmData,frameSize);// Decode the opus packet back into PCMvardecodedPacket=encoder.decode(encodedPacket);// Delete the encoder when finished with it (Emscripten does not automatically call C++ object destructors)encoder.delete();
If your environment doesn't support WASM, you can try the JS-only module. Do note that the JS-only version barely has optimizations due to compiler/toolchain limitations, and should only be used as a last resort.
varencoder=newOpusScript(samplingRate,channels,OpusScript.Application.AUDIO,{wasm:false});
Since this module wasn't written for TypeScript, you need to useimport = require
syntax.
// Import using:importOpusScript= require("opusscript");// and NOT:importOpusScriptfrom"opusscript";