# @audio/decode-mp4 中文文档

规范地址：https://npmcn.com/package/%40audio/decode-mp4/

版本：1\.3\.1
npm 元数据更新时间：2026-09-29T04:29:49.292Z
中文译文更新时间：2026-11-07T04:26:28.194Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40audio/decode-mp4
原文对照：https://npmcn.com/package/%40audio/decode-mp4/?lang=original
项目主页：https://github.com/audiojs/decode/tree/main/packages/decode-mp4
源码仓库：https://github.com/audiojs/decode

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：31 kB，7 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=18
- 运行依赖：8 个
- 首次发布：2026-08-27T19:00:41.471Z
- 最新版本发布：2026-09-29T04:29:49.121Z
- 近 30 天下载量：561351（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：6（近 12 个月 6 个）

## 中文简介

将MP4,MOV,M4A,M4V和3GP文件(AAC,ALAC,MP3,FLAC,Opus,AMR,PCM)的音频轨道解码为PCM样本

## 安装

```sh
npm install @audio/decode-mp4
```

也可以使用：`pnpm add @audio/decode-mp4`、`yarn add @audio/decode-mp4`、`bun add @audio/decode-mp4`

## README

# @ audio/decode-mp4 (英语)

将MP4,MOV,M4A,M4V和3GP文件的音频轨道解码为PCM浮标样本.  
一个纯-JS ISO BMFF解调器,可以跳过视频轨迹并引导音频(AAC,ALAC,MP3,FLAC,Opus,AC-3,DTS,AMR,PCM)到匹配的编码包,按需要加载.

[![npm install @audio/decode-mp4](https://nodei.co/npm/@audio/decode-mp4.png?mini=true)](https://npmjs.org/package/@audio/decode-mp4/)

```js
import decode, { decoder } from '@audio/decode-mp4'

let { channelData, sampleRate } = await decode(mp4Bytes)

let dec = await decoder()
let head = await dec.decode(chunk1)   // Promise on the chunk that completes the track header
let more = dec.decode(chunk2)         // synchronous from then on
let tail = await dec.flush()
dec.free()
```

## 编解码器

| 样本条目 | 代码c | 解码由 |
| --- | --- | --- |
| `mp4a` (对象类型 0x40, 0x66–0x68) | AAC-LC, HE-AAC v1/v2 (英语) | [@ audio/decode-aac](https://npmcn.com/package/%40audio/decode-aac) |
| `alac` | 无苹果损失 | [@ audio/decode-aac](https://npmcn.com/package/%40audio/decode-aac) (纯联署材料) |
| `mp4a` (0x69, 0x6B), (中文(简体) ), `.mp3` | MP3 主题 | [@ audio/decode-mp3 (英语)](https://npmcn.com/package/%40audio/decode-mp3) |
| `fLaC` | 拉丁美洲和加勒比 | [@audio/decode-flac (英语)](https://npmcn.com/package/%40audio/decode-flac) |
| `Opus` | 奥普斯 Opus | [@ audio/decode-opus (英语)](https://npmcn.com/package/%40audio/decode-opus) |
| `samr`, (中文(简体) ), `sawb` | AMR-NB、AMR-WB | [@ audio/decode-amr (英语)](https://npmcn.com/package/%40audio/decode-amr) |
| `sowt`, (中文(简体) ), `twos`, (中文(简体) ), `in24`, (中文(简体) ), `in32`, (中文(简体) ), `fl32`, (中文(简体) ), `fl64`, (中文(简体) ), `lpcm`, (中文(简体) ), `ipcm`, (中文(简体) ), `fpcm`, (中文(简体) ), `raw` , (中文(简体) ), `NONE` | PCM 8–32 位点正中, 32/64 位点浮出水面, 无论是内向 | 建于内 |
| `ulaw`, (中文(简体) ), `alaw` | G. 711号文件 | 建于内 |
| `ac-3`, (中文(简体) ), `mp4a` (0xA5) (英语) | AC-3号 | [@ audio/decode-ac3 (英语)](https://npmcn.com/package/%40audio/decode-ac3) |
| `dtsc`, (中文(简体) ), `dtsh`, (中文(简体) ), `dtsl`, (中文(简体) ), `dtse`, (中文(简体) ), `mp4a` (0xA9) (简体中文) | DTS( 核心) | [@ audio/decode-dts (英语)](https://npmcn.com/package/%40audio/decode-dts) |
| `ec-3`, (中文(简体) ), `mp4a` (0xA6) (中文(简体) ) | E-AC-3(多比数字加号) | [@ audio/ decode-eac3 (英语)](https://npmcn.com/package/%40audio/decode-eac3) |

TrueHD 音轨丢出一个给解码器命名的错误 。 被分解的MP4(ISO/IEC 14496-12§8.8), `moof`\+ 键`mdat` 在空表之后 `moov`流被片断,只持有尚未读取的字节。 QuickTime 声音描述 v0, v1 和 v2 处理, 包括 `wave`\- 包装的配置和 `enda` 内向旗. 何时 `moov` 如下 `mdat` (典型的相机和QuickTime输出)文件被缓冲到标题到达.

解码器包是动态导入的,在 AudioWorklet —— 主线程或 Worker 中解码器内部是没有的.

## API 密码

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

解码一个完整的文件 .

### `decoder(): Promise<MP4Decoder>`

流出解码器. `decode(chunk)` 返回时 `AudioData`,或者在编解码模块加载时完成音轨头的块上承诺. `flush()` 如果找不到音频音轨,则返回剩余样本并丢出. `free()` 释放代码资源.

### `AudioData`

```ts
{ channelData: Float32Array[], sampleRate: number }
```

## 许可证

[ॐ](https://github.com/krishnized/license/) • 妇女 [麻省理工学院](https://npmcn.com/package/%40audio/decode-mp4/LICENSE)密码包携带自己的许可证.

## 常见问题

### @audio/decode-mp4 是什么？

将MP4,MOV,M4A,M4V和3GP文件\(AAC,ALAC,MP3,FLAC,Opus,AMR,PCM\)的音频轨道解码为PCM样本

### 如何安装 @audio/decode-mp4？

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

### @audio/decode-mp4 支持 TypeScript 吗？

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

### @audio/decode-mp4 支持 ESM 还是 CommonJS？

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

### @audio/decode-mp4 需要什么版本的 Node\.js？

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

### @audio/decode-mp4 可以商用吗？

@audio/decode-mp4 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @audio/decode-mp4 的下载量有多少？

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

### @audio/decode-mp4 还在维护吗？

最新版本 1\.3\.1 发布于 2026/09/29（1 个月前）；至今共发布 6 个版本，其中过去 12 个月发布了 6 个；首次发布于 2026/08/28。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

