@axonkit/audio-codecs-js
v0.1.0
Published
AudioEncoder/AudioDecoder (WebCodecs-compatible API) with WASM (fdk-aac) fallback
Maintainers
Readme
audio-codecs-js
Browser audio encoder/decoder with the same API as WebCodecs AudioEncoder and AudioDecoder.
Assumes a WebCodecs-capable environment (secure context with AudioEncoder / AudioDecoder present). The library does not polyfill WebCodecs itself; it adds an AAC WASM path when native AAC is missing or when you opt in via globalThis.__forceWasm.
- If the browser supports AAC through native WebCodecs, that path is used.
- Otherwise the library loads WASM (Fraunhofer fdk-aac).
WASM override (not part of WebCodecs)
WASM is only used for AAC (mp4a.40.*, mp4a.67) when the browser has no native AAC or you set:
globalThis.__forceWasm = true;before configure(). Other codecs always use the platform AudioEncoder / AudioDecoder; __forceWasm does not affect them.
Install
npm install audio-codecs-jsUsage
import { AudioEncoder, AudioDecoder } from 'audio-codecs-js';
const encoder = new AudioEncoder({
output(chunk, metadata) {
/* … */
},
error(e) {
console.error(e);
},
});
await encoder.configure({
codec: 'mp4a.40.2',
sampleRate: 44100,
numberOfChannels: 2,
bitrate: 128000,
aac: { format: 'aac' }, // Chromium-style; optional
});
encoder.encode(audioData);
await encoder.flush();
encoder.close();Main package exports
AudioEncoder,AudioDecoderisWebCodecsAACEncoderSupported,isWebCodecsAACDecoderSupported,resetDetectionCache
WASM / worker URL overrides (optional)
Not re-exported from the main entry. Use the subpath when you host .wasm / worker scripts yourself:
import { setWasmUrl, setWorkerUrl } from 'audio-codecs-js/wasm-runtime';
setWasmUrl('/static/wasm/fdk-aac.wasm');
setWorkerUrl('/static/aac-worker.mjs');Also available: setWasmGlueUrl, setWasmModuleFactory.
Types follow the DOM WebCodecs definitions (AudioEncoderConfig, etc.).
Build
npm run build:wasm
npm run build:tsArtifacts: dist/index.mjs, dist/index.cjs, dist/wasm-runtime.mjs, dist/aac-worker.mjs, dist/wasm/*.
Demo
npm run build:ts
npm run demo:serveLicense
Library: MIT. FDK-AAC licensing applies to the WASM binary—check compliance for your product.
