JSPM

@axonkit/audio-codecs-js

0.1.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 19
  • Score
    100M100P100Q46408F
  • License MIT

AudioEncoder/AudioDecoder (WebCodecs-compatible API) with WASM (fdk-aac) fallback

Package Exports

  • @axonkit/audio-codecs-js
  • @axonkit/audio-codecs-js/wasm-runtime
  • @axonkit/audio-codecs-js/wasm/decoder-worker-proxy.d.ts
  • @axonkit/audio-codecs-js/wasm/decoder.d.ts
  • @axonkit/audio-codecs-js/wasm/encoder-worker-proxy.d.ts
  • @axonkit/audio-codecs-js/wasm/encoder.d.ts
  • @axonkit/audio-codecs-js/wasm/fdk-aac.js
  • @axonkit/audio-codecs-js/wasm/fdk-aac.wasm
  • @axonkit/audio-codecs-js/wasm/fdk-types.d.ts
  • @axonkit/audio-codecs-js/wasm/module.d.ts
  • @axonkit/audio-codecs-js/wasm/pcm-utils.d.ts
  • @axonkit/audio-codecs-js/wasm/url-utils.d.ts
  • @axonkit/audio-codecs-js/wasm/worker-url.d.ts
  • @axonkit/audio-codecs-js/wasm/worker.d.ts
  • @axonkit/audio-codecs-js/worker

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-js

Usage

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, AudioDecoder
  • isWebCodecsAACEncoderSupported, 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:ts

Artifacts: dist/index.mjs, dist/index.cjs, dist/wasm-runtime.mjs, dist/aac-worker.mjs, dist/wasm/*.

Demo

npm run build:ts
npm run demo:serve

License

Library: MIT. FDK-AAC licensing applies to the WASM binary—check compliance for your product.