FLAC WebCodecs 注册

W3C 小组草案注释

有关本文档的更多详细信息
此版本:
https://www.w3.org/TR/2025/DNOTE-webcodecs-flac-codec-registration-20250514/
最新发布版本:
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 Inc.)
参与:
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 标准和草案索引中找到,地址为 https://www.w3.org/TR/。

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

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

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

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

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

本文档受 2023 年 11 月 03 日 W3C 流程文档约束。

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

编解码器字符串"flac"

2. EncodedAudioChunk 数据

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

3. AudioDecoderConfig description

description 是必需的,并且必须如下:

sampleRatenumberOfChannels 成员会被解码器在 description 中找到的内容覆盖。

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

4. EncodedAudioChunk type

对于包含 FLAC 的 EncodedAudioChunk, 其 [[type]] 始终为 “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]

本规范中的示例用 “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. 2025 年 4 月 17 日. WD. URL: https://www.w3.org/TR/webcodecs/
[WEBIDL]
Edgar Chen; Timothy Gu. Web IDL Standard. Living Standard. URL: https://webidl.spec.whatwg.org/

资料性参考文献

[FLAC]
Free Lossless Audio Codec. URL: https://datatracker.ietf.org/doc/draft-ietf-cellar-flac
[WEBCODECS-CODEC-REGISTRY]
Paul Adenot; Bernard Aboba. WebCodecs Codec Registry. 2024 年 9 月 9 日. DRY. URL: 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;
};