<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr" class="gmail_signature"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div>If anyone is integrating Opus audio into a web or JavaScript application, I wrote a WebAssembly Opus decoder that uses libopusfile to decode Opus files in chunks using the JavaScript Streams API.  This decoder can begin decoding after receiving the Opus headers and first audio data page:</div><div dir="ltr"><a href="https://github.com/AnthumChris/opus-stream-decoder">https://github.com/AnthumChris/opus-stream-decoder</a><br>
</div><div dir="ltr"><br></div><div>All thoughts and contributions are welcome, and I'm planning to add a seeking feature using HTTP range requests:</div><div><a href="https://github.com/AnthumChris/opus-stream-decoder/issues/1">https://github.com/AnthumChris/opus-stream-decoder/issues/1</a></div><div><br></div><div>Browsers and the Web Audio API don't currently offer direct ways to decode partial Opus files until the complete file is downloaded and available.  If anyone has connections with browser vendor engineers, it would be worth considering a direct way for JavaScript to access browsers' baked-in Opus decoding library, which would avoid the ~140-220K Wasm binaries currently needed to do this.  Only complete files can be downloaded with BaseAudioContext.decodeAudioData():</div><div><a href="https://developer.mozilla.org/en-US/docs/Web/API/BaseAudioContext/decodeAudioData">https://developer.mozilla.org/en-US/docs/Web/API/BaseAudioContext/decodeAudioData</a><br></div>












</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div>