Decode WMA audio to PCM float samples. The package combines a pure-JS ASF demuxer with the RockBox fixed-point decoder compiled to WASM.
npm i @audio/decode-wma
import decode from '@audio/decode-wma'
let { channelData, sampleRate } = await decode(wmaBuffer)import { decoder } from '@audio/decode-wma'
let dec = await decoder()
let result = dec.decode(chunk)
dec.free()decoder() is asynchronous. Its decode() and flush() methods are synchronous.
import { demuxASF } from '@audio/decode-wma'
let { channels, sampleRate, bitRate, packets } = demuxASF(buffer)Whole-file decode. Accepts Uint8Array or ArrayBuffer.
Creates a decoder instance.
dec.decode(data): decode aUint8ArrayorArrayBufferchunk.dec.flush(): decode a buffered variable-size packet or return an empty result.dec.free(): release WASM memory.
Parse ASF container without decoding. Returns stream properties and raw packets.
- WMA v1 (0x0160)
- WMA v2 (0x0161)
WMA Pro and Lossless are not supported. An FFmpeg-based build is available via build-ffmpeg.sh for those formats.
npm run build
RockBox source is included in lib/rockbox-wma/ (3 files, 152 KB).