AAC WebCodecs 注册

W3C 小组注释草案

有关本文档的更多详细信息
此版本:
https://www.w3.org/TR/2026/DNOTE-webcodecs-aac-codec-registration-20260319/
最新发布版本:
https://www.w3.org/TR/webcodecs-aac-codec-registration/
编辑草案:
https://w3c.github.io/webcodecs/aac_codec_registration.html
先前版本:
历史:
https://www.w3.org/standards/history/webcodecs-aac-codec-registration/
反馈:
GitHub
编辑:
Paul Adenot (Mozilla)
Eugene Zemtsov (Google LLC)
前任编辑:
Bernard Aboba (Microsoft Corporation)
Chris Cunningham (Google Inc.)
参与:
Git 仓库。
提交问题。
版本历史:
https://github.com/w3c/webcodecs/commits

摘要

此注册已录入 [webcodecs-codec-registry]。 它描述了 AAC 的:(1) 完全限定的编解码器字符串,(2) 编解码器特有的 EncodedAudioChunk [[internal data]] 字节,(3) AudioDecoderConfig.description 字节,(4) EncodedAudioChunk [[type]] 的值, 以及 (5) 对 AudioEncoderConfig 的编解码器特有扩展

此注册无意包含任何关于某种 编解码器格式是否受知识产权主张约束的信息。如果实现者和 作者打算实现或使用特定的编解码器格式,建议他们在此事项上寻求 适当的法律顾问。WebCodecs 的实现者不被要求支持 AAC 编解码器。

此注册是非规范性的。

本文档的状态

本节描述了本文档在发布时的状态。当前 W3C 出版物列表以及本 技术报告的最新修订版可在 W3C 标准和草案索引中找到。

欢迎对此规范提供反馈和评论。 对本规范的讨论首选使用 GitHub Issues。 或者,你也可以将评论发送到媒体工作组的邮件列表 public-media-wg@w3.org归档)。 本草案突出显示了一些仍有待工作组讨论的待处理问题。 关于这些问题的结果,包括它们是否有效,尚未作出决定。

本文档由 媒体工作组作为 小组注释草案发布,并使用 注释 轨道

小组注释草案不被 W3C 或其成员认可。

这是一个草案文档,可能随时被其他文档更新、替换或废弃。 除作为进行中的工作之外,引用本文档是不合适的。

W3C 专利政策不对本文档附带任何许可 要求或承诺。

本文档受 2025 年 8 月 18 日 W3C 流程文档约束。

1. 完全限定的编解码器字符串

此编解码器有多个可能的编解码器 字符串

2. EncodedAudioChunk 数据

如果比特流采用 adts 格式,则 [[internal data]]EncodedAudioChunk 的数据 预期 为一个 ADTS 帧,如 [iso14496-3] 第 1.A.3.2 节所述。

如果比特流采用 aac 格式,则 [[internal data]]EncodedAudioChunk 的数据 预期 为一个原始 AAC 帧(语法元素 raw_data_block()),如 [iso14496-3] 第 4.4.2.1 节所述。 Extended HE-AAC 必须采用 aac 格式。

3. AudioDecoderConfig description

如果存在 description, 则假定它是一个 AudioSpecificConfig,如 [iso14496-3] 第 1.6.2.1 节表 1.19 所定义, 并且假定比特流采用 aac 格式。

如果不存在 description, 则假定比特流 采用 adts 格式。

sampleRatenumberOfChannels 成员会被忽略。

4. EncodedAudioChunk type

对于包含 AAC 的 EncodedAudioChunk, 其 [[type]] 始终为 “key”。

注: 一旦初始化成功,任何 AAC 数据包都可以在 任何时候无错误地解码,但这可能不会产生预期的音频 输出。

5. AudioEncoderConfig 扩展

partial dictionary AudioEncoderConfig {
  AacEncoderConfig aac;
};

aac, 类型为 AacEncoderConfig
包含 AAC 编解码器的编解码器特有配置选项。

5.1. AacEncoderConfig

dictionary AacEncoderConfig {
  AacBitstreamFormat format = "aac";
};

format, 类型为 AacBitstreamFormat,默认值为 "aac"
配置输出 EncodedAudioChunk 的格式。 参见 AacBitstreamFormat

5.2. AacBitstreamFormat

enum AacBitstreamFormat {
  "aac",
  "adts",
};

AacBitstreamFormat 决定了解码已编码音频流所必需的元数据所在的位置。

aac
已编码音频流的元数据通过 AudioDecoderConfig.description 在配置时提供。
adts
已编码音频流的元数据在每个 ADTS 帧中提供, 因此不需要 AudioDecoderConfig.description

6. 隐私考量

请参阅 隐私 考量一节,该节位于 [WEBCODECS] 中。

7. 安全考量

请参阅 安全 考量一节,该节位于 [WEBCODECS] 中。

一致性

文档 约定

一致性要求使用 描述性断言 和 RFC 2119 术语的组合来表达。 关键字 “MUST”、“MUST NOT”、“REQUIRED”、“SHALL”、“SHALL NOT”、“SHOULD”、“SHOULD NOT”、“RECOMMENDED”、 “MAY” 和 “OPTIONAL” 在本文档的规范性部分中 应按 RFC 2119 中的描述解释。 但是,为了可读性, 这些词在本规范中并不会全部以大写字母出现。

本规范的所有文本都是规范性的, 但明确标记为非规范性的章节、示例和注释除外。[RFC2119]

本规范中的示例用 “for example” 一词引入, 或通过 class="example" 与规范性文本分开, 如下所示:

这是一个资料性示例的例子。

资料性注释以 “Note” 一词开头, 并通过 class="note" 与规范性文本分开, 如下所示:

Note,这是一个资料性注释。

索引

由本 规范定义的术语

由 引用定义的术语

参考文献

规范性参考文献

[RFC2119]
S. Bradner. Key words for use in RFCs to Indicate Requirement Levels. 1997 年 3 月. Best Current Practice. URL: https://datatracker.ietf.org/doc/html/rfc2119
[WEBCODECS]
Paul Adenot; Eugene Zemtsov. WebCodecs. 2026 年 3 月 10 日. WD. URL: https://www.w3.org/TR/webcodecs/

资料性参考文献

[ISO14496-3]
ISO/IEC 14496-3:2019 - Information technology — Coding of audio-visual objects — Part 3: Audio. 2019-12. URL: https://www.iso.org/standard/76383.html
[ISO23003-3]
ISO/IEC 23003-3:2020 - Information technology — MPEG audio technologies — Part 3: Unified speech and audio coding. 2020-06. URL: https://www.iso.org/standard/76385.html
[ISO23003-4]
ISO/IEC 23003-4:2025 - Information technology — MPEG audio technologies — Part 4: Dynamic range control. 2025-03. URL: https://www.iso.org/standard/89036.html
[WEBCODECS-CODEC-REGISTRY]
Paul Adenot; Eugene Zemtsov. WebCodecs Codec Registry. 2026 年 2 月 12 日. DRY. URL: https://www.w3.org/TR/webcodecs-codec-registry/

IDL 索引

partial dictionary AudioEncoderConfig {
  AacEncoderConfig aac;
};


dictionary AacEncoderConfig {
  AacBitstreamFormat format = "aac";
};


enum AacBitstreamFormat {
  "aac",
  "adts",
};