@audio/decode-aac

中文文档
1.6.0发布于 2026/09/29GPL-2.0TypeScriptES Module零依赖近 30 天下载 72.5万

将AAC/M4A(FAAD2 WASM)和ALAC/Apple Lossless(纯JS)编码为PCM样本

中文使用文档
文档目录11 节
  1. 安装
  2. 使用量
  3. 流线
  4. API 密码
  5. decode(src: Uint8Array | ArrayBuffer): Promise<AudioData>
  6. decoder(opts?): Promise<AACDecoder>
  7. 无缺口
  8. AudioData
  9. 格式
  10. 元数据
  11. 许可证

@ audio/decode-aac

将AAC/M4A和ALAC音频解码为PCM浮标样本. FAAD2 WASM hands AAC;苹果公司参考解码器的一个纯JS端口 hands ALAC. M4A样本条目选择了解码器.

安装

npm i @audio/decode-aac

使用量

import decode from '@audio/decode-aac'

// M4A or raw ADTS; auto-detected
let { channelData, sampleRate } = await decode(uint8array)
// channelData: Float32Array[] (one per channel)
// sampleRate: number

流线

import { decoder } from '@audio/decode-aac'

let dec = await decoder()
let { channelData, sampleRate } = dec.decode(chunk)
dec.free()

decoder() 是一个同步的。 内容 decode() 财务报告和审定财务报表 flush() 方法是同步的.

API 密码

decode(src: Uint8Array | ArrayBuffer): Promise<AudioData>

全文件解码. 自动检测M4A(MP4容器)对生ADTS.

decoder(opts?): Promise<AACDecoder>

创建手动控制的解码器实例.

  • dec.decode(data)解码 a Uint8Array 或者说 ArrayBuffer 块.
  • dec.flush(): 丢弃缓冲部分数据并返回空结果.
  • dec.free():释放出WASM记忆.

没有选项, 字节流是自动检测的( M4A 或 ADTS) 。 装有解码器的集装箱拆解器,通过前接接接接接接接接接接接接接接接接接接接接接 decode() 电话 :

let dec = await decoder({ asc })   // AudioSpecificConfig (esds, Matroska CodecPrivate, WAVEFORMATEX extra bytes)
let dec = await decoder({ alac })  // ALAC magic cookie

就是这样 @ audio/decode-mp4 (英语), (中文(简体) ), @ audio/decode-webm (英语) 财务报告和审定财务报表 @ audio/decode-avi 从视频文件中解码AAC和ALAC轨道.

无缺口

M4A被解码为无间隙:编码器的活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化活化. 音轨的编辑列表显示演示文稿的起始位置,因为它有一个媒体编辑(ISO/IEC 14496-12 §8.6.6; 有几种是编辑,而不是修饰: 音轨解码整条), 否则iTunes' iTunSMPB 标签; FAAD2 自身的延迟(它扣留了它的第一个帧; SBR 延迟 HE-AAC 962 个样本)被计算在内. 原始的ADTS流没有这样的信息,并且保持了解码器的延迟. 从容器里读取的窗子通过一个解码器:

import { decoder, gapless } from '@audio/decode-aac'
let dec = await decoder({ asc, gapless: gapless({ elst, mdhd, stts, mvhd, ilst, asc }) })  // box bodies
// or directly: { gapless: { start, duration } } in seconds of the media timeline

AudioData

{ channelData: Float32Array[], sampleRate: number }

格式

  • M4A / MP4 / MOV 有 AAC 音频( LC和 HE- AAC v1/v2 有 SBR 或 PS) – QuickTime 声音描述 v0, v1和 v2
  • M4A / MP4 带位精确纯 JS ALAC 解码于 16, 20, 24 或 32 位
  • 原始 ADTS 流 (. aac)

元数据

import { parseMeta } from '@audio/decode-aac/meta'

let { meta, sampleRate } = parseMeta(m4aBytes)
// meta: { title, artist, album, year, genre, track, ..., pictures }

许可证

ॐ AAC 解码 GPL-2.0 导弹 (FAAD2),ALAC解码Apache-2.0 (苹果的ALAC参考端口)

版本与发布记录

@audio/decode-aac 共发布 14 个版本,首次发布于 2026/04/04;过去 12 个月发布了 14 个版本。

版本发布日期距今
1.6.0latest2026/09/291 个月前
1.5.02026/08/282 个月前
1.4.02026/08/122 个月前
1.3.42026/07/143 个月前
1.3.32026/07/143 个月前
1.3.22026/07/113 个月前

关于 @audio/decode-aac 的常见问题

@audio/decode-aac 是什么?

将AAC/M4A(FAAD2 WASM)和ALAC/Apple Lossless(纯JS)编码为PCM样本

如何安装 @audio/decode-aac?

在项目目录运行 npm install @audio/decode-aac,或使用 pnpm add / yarn add / bun add。

@audio/decode-aac 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@audio/decode-aac 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@audio/decode-aac 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=18。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@audio/decode-aac 可以商用吗?

@audio/decode-aac 使用 GPL-2.0 许可。强 Copyleft:分发包含该代码的软件时,整个作品需以兼容的 GPL 许可开源。仅在内部使用、不对外分发时不触发此义务。以上为概括,不构成法律意见,请以许可原文为准。

@audio/decode-aac 的下载量有多少?

根据 npm 官方下载统计,@audio/decode-aac 在 2026/10/07 – 2026/11/05 这 30 天内被下载 725,290 次,日均约 24,176 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@audio/decode-aac 还在维护吗?

最新版本 1.6.0 发布于 2026/09/29(1 个月前);至今共发布 14 个版本,其中过去 12 个月发布了 14 个;首次发布于 2026/04/04。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。