@unni-craftsman/aac-encode
v0.1.2
Published
Small WASM AAC ADTS encoder for 16-bit PCM audio.
Downloads
377
Maintainers
Readme
@unni-craftsman/aac-encode
Small WASM AAC encoder built from FAAC. It encodes PCM16 audio to AAC in an
ADTS stream (.aac).
Install
npm install @unni-craftsman/aac-encodeUsage
Bun/default runtime:
import { readFileSync, writeFileSync } from 'node:fs'
import { encodeWavToAacAdts } from '@unni-craftsman/aac-encode'
const wav = readFileSync('input.wav')
const aac = await encodeWavToAacAdts(wav, { bitRate: 64000 })
writeFileSync('output.aac', aac)Explicit Bun export:
import { encodeWavToAacAdts } from '@unni-craftsman/aac-encode/bun'Cloudflare Workers:
import { encodeWavToAacAdts } from '@unni-craftsman/aac-encode/worker'
export default {
async fetch(request: Request, env: { ASSETS: Fetcher }) {
const wavResponse = await env.ASSETS.fetch(new URL('/input.wav', request.url))
const wav = new Uint8Array(await wavResponse.arrayBuffer())
const aac = await encodeWavToAacAdts(wav, { bitRate: 64000 })
return new Response(aac, { headers: { 'content-type': 'audio/aac' } })
},
}For raw PCM:
import { encodeAacAdts } from '@unni-craftsman/aac-encode'
const aac = await encodeAacAdts(pcm16, {
sampleRate: 24000,
channels: 1,
bitRate: 64000,
})Notes
- Input must be signed 16-bit PCM.
- WAV helper supports PCM16 RIFF/WAVE files.
- Output is AAC ADTS, suitable for
.aacfiles. - Cloudflare Workers should import
@unni-craftsman/aac-encode/workerso Wrangler uploadsfaac.wasmas a Wasm module. - The bundled encoder is FAAC and is licensed LGPL-2.1-or-later.
