FLAC WebCodecs 注册

W3C 小组说明草案,

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

摘要

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

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

此注册项不具有规范性。

本文档的状态

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

欢迎对本规范提供反馈和评论。 建议优先通过 GitHub Issues 讨论本 规范。或者,也可以将评论发送至媒体工作组的邮件列表 public-media-wg@w3.org(归档)。 本草案重点标出了工作组仍有待讨论的一些问题。 对于这些问题的结果,包括它们是否有效,尚未作出任何决定。

本文档由 媒体工作组按照 说明 流程发布为小组说明草案。

小组说明草案未获得 W3C 或其成员的认可。

本文档是一份草案,可能随时被其他文档更新、替换或废止。 除了将其引用为进行中的工作之外,不宜以其他方式引用本文档。

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

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

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

编解码器字符串为 "flac"。

2. EncodedAudioChunk 数据

EncodedAudioChunk 的 [[internal data]] 预期为 [FLAC] 中描述的“FRAME”。

3. AudioDecoderConfig 描述

description 是必需的,并且必须包含以下内容:

sampleRate 和 numberOfChannels 成员的值会被解码器在 description 中找到的值覆盖。

注:这对应于 FLAC 比特流的开头,位于音频 帧之前。

4. EncodedAudioChunk 类型

[[type]] 对于包含 FLAC 的 EncodedAudioChunk 而言, 始终为“key”。

注:初始化成功后,任何 FLAC 数据包都可以在 任意时间无错误地解码,但这可能无法产生预期的音频输出。

5. AudioEncoderConfig 扩展

partial dictionary AudioEncoderConfig {
  FlacEncoderConfig flac;
};

flac, 类型为 FlacEncoderConfig
包含 FLAC 编解码器特有的配置选项。

5.1. FlacEncoderConfig

dictionary FlacEncoderConfig {
  [EnforceRange] unsigned long blockSize = 0;
  [EnforceRange] unsigned long compressLevel = 5;
};

要检查 FlacEncoderConfig 是否有效,请运行以下步骤:

  1. 如果 blockSize 不是有效的块大小, 如 [FLAC] 第 5.1 节所述,则返回 false。

  2. 如果指定了 compressLevel 且其值不在 0(最快、压缩程度最低)到 8(最慢、压缩程度最高) 的闭区间内,则返回 false。

  3. 返回 true。

blockSize, 类型为 unsigned long,默认值为 0
配置输出 EncodedAudioChunk 的每帧使用的采样数。

注:使用 0 可让编码器默认 估算块大小。

compressLevel, 类型为 unsigned long,默认值为 5
配置编码时使用的压缩级别。

6. 隐私注意事项

请参阅 隐私 注意事项一节,见 [WEBCODECS]。

7. 安全注意事项

请参阅 安全 注意事项一节,见 [WEBCODECS]。

符合性

文档 约定

符合性要求通过 描述性断言与 RFC 2119 术语相结合的方式表达。 关键词“MUST”“MUST NOT”“REQUIRED”“SHALL”“SHALL NOT”“SHOULD”“SHOULD NOT”“RECOMMENDED”、 “MAY”和“OPTIONAL” 在本文档的规范性部分中 应按照 RFC 2119 中的描述进行解释。 但是,为了便于阅读, 本规范中这些词语并非全部使用大写字母。

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

本规范中的示例以“例如” 等词语引出,或者通过 class="example" 与规范性文本区分开来, 如下所示:

这是一个资料性示例。

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

注:这是一条资料性注释。

索引

本规范 定义的术语

通过 引用定义的术语

参考文献

规范性参考文献

[RFC2119]
S. Bradner. 用于 指示要求级别的 RFC 关键词。1997年3月。现行最佳实践。网址:https://datatracker.ietf.org/doc/html/rfc2119
[WEBCODECS]
Paul Adenot; Eugene Zemtsov. WebCodecs。2026年 10月7日。WD。网址:https://www.w3.org/TR/webcodecs/
[WEBIDL]
Edgar Chen; Timothy Gu. Web IDL 标准。现行 标准。网址:https://webidl.spec.whatwg.org/

非规范性参考文献

[FLAC]
自由无损音频 编解码器。网址:https://datatracker.ietf.org/doc/draft-ietf-cellar-flac
[WEBCODECS-CODEC-REGISTRY]
Paul Adenot; Eugene Zemtsov. WebCodecs 编解码器 注册表。2026年9月24日。DRY。网址:https://www.w3.org/TR/webcodecs-codec-registry/

IDL 索引

partial dictionary AudioEncoderConfig {
  FlacEncoderConfig flac;
};


dictionary FlacEncoderConfig {
  [EnforceRange] unsigned long blockSize = 0;
  [EnforceRange] unsigned long compressLevel = 5;
};