AVC (H.264) WebCodecs 注册

W3C 小组草案注释

有关本文档的更多详细信息
此版本:
https://www.w3.org/TR/2025/DNOTE-webcodecs-avc-codec-registration-20250514/
最新发布版本:
https://www.w3.org/TR/webcodecs-avc-codec-registration/
编辑草案:
https://w3c.github.io/webcodecs/avc_codec_registration.html
先前版本:
历史:
https://www.w3.org/standards/history/webcodecs-avc-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]。 它描述了 AVC (H.264) 的:(1) 完全限定的编解码器字符串, (2) 编解码器特有的 EncodedVideoChunk [[internal data]] 字节,(3) VideoDecoderConfig.description 字节, (4) EncodedVideoChunk [[type]] 的值, (5) 对 VideoEncoderConfig 的编解码器特有扩展, 以及 (6) 对 VideoEncoderEncodeOptions 的编解码器特有扩展。

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

此注册是非规范性的。

本文档的状态

本节描述了本文档在发布时的状态。当前 W3C 出版物列表以及本 技术报告的最新修订版可在 W3C 标准和草案索引中找到,地址为 https://www.w3.org/TR/。

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

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

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

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

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

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

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

编解码器字符串以前缀 "avc1." 或 "avc3." 开始,并带有 6 个字符的后缀,分别如 [rfc6381] 第 3.4 节 和 [iso14496-15] 第 5.4.1 节所述。

2. EncodedVideoChunk 数据

EncodedVideoChunk[[internal data]] 预期为 [ITU-T-REC-H.264] 第 7.4.1.2 节所定义的访问单元。

注: 一个访问单元恰好包含一个主要编码 图像。

如果比特流采用 avc 格式,则假定 [[internal data]] 采用规范格式,如 [iso14496-15] 第 5.3.2 节所定义。

如果比特流采用 annexb 格式,则假定 [[internal data]] 采用 Annex B 格式, 如 [ITU-T-REC-H.264] 附录 B 所定义。

注: 由于 [[internal data]] 本质上是字节对齐的, 实现不需要恢复字节对齐。

3. VideoDecoderConfig description

如果存在 description, 则假定它是一个 AVCDecoderConfigurationRecord,如 [iso14496-15] 第 5.3.3.1 节所定义,并且假定比特流采用 avc 格式。

注: 此格式通常用于 .MP4 文件,其中 播放器通常 可以随机访问媒体数据。

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

注: "annexb" 格式由 [ITU-T-REC-H.264] 附录 B 更详细地描述。此格式通常用于直播应用,其中 周期性地包含 SPS 和 PPS 数据,可以让用户轻松地 从流的中间开始。

4. EncodedVideoChunk type

如果某个 EncodedVideoChunk[[type]]key, 且比特流采用 avc 格式,则该 EncodedVideoChunk 预期 包含一个作为即时解码刷新(IDR) 图像的主要编码图像。

注: 如果比特流采用 avc 格式,则解码所必需的参数集 包含在 VideoDecoderConfig.description 中。

如果某个 EncodedVideoChunk[[type]]key, 且比特流采用 annexb 格式,则该 EncodedVideoChunk 预期 同时包含一个作为即时解码 刷新(IDR)图像的主要编码图像,以及解码该 EncodedVideoChunk 中所有视频数据 NAL 单元所必需的所有参数集。

5. VideoEncoderConfig 扩展

partial dictionary VideoEncoderConfig {
  AvcEncoderConfig avc;
};

avc, 类型为 AvcEncoderConfig
包含 AVC (H.264) 编解码器的编解码器特有配置选项。

5.1. AvcEncoderConfig

dictionary AvcEncoderConfig {
  AvcBitstreamFormat format = "avc";
};

format, 类型为 AvcBitstreamFormat,默认值为 "avc"
配置输出 EncodedVideoChunk 的格式。 参见 AvcBitstreamFormat

5.2. AvcBitstreamFormat

enum AvcBitstreamFormat {
  "annexb",
  "avc",
};

AvcBitstreamFormat 决定 AVC 参数集所在的位置,以及 打包比特流的机制。

annexb
SPS 和 PPS 数据会周期性地包含在整个比特流中。

注: 此格式由 [ITU-T-REC-H.264] 附录 B 更详细地描述。此格式通常用于直播应用, 其中周期性地包含 SPS 和 PPS 数据,可以让用户轻松地 从流的中间开始。

avc
SPS 和 PPS 数据不会包含在比特流中,而是通过 [[output callback]] 作为 VideoDecoderConfig.description 发出到 EncodedVideoChunkMetadata.decoderConfig

注: 此格式由 [iso14496-15] 第 5.3 节更详细地描述。此格式通常用于 .MP4 文件,其中 播放器通常可以随机访问媒体数据。

6. VideoEncoderEncodeOptions 扩展

partial dictionary VideoEncoderEncodeOptions {
  VideoEncoderEncodeOptionsForAvc avc;
};

avc, 类型为 VideoEncoderEncodeOptionsForAvc
包含 [ITU-T-REC-H.264] 编解码器的编解码器特有编码选项。

6.1. VideoEncoderEncodeOptionsForAvc

dictionary VideoEncoderEncodeOptionsForAvc {
  unsigned short? quantizer;
};

quantizer, 类型为 unsigned short,可为空
设置逐帧量化器值。 在 [ITU-T-REC-H.264] 中, 量化器阈值可以在 0 到 51 之间变化。

7. 隐私考量

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

8. 安全考量

请参阅 安全 考量一节,该节位于 [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/

资料性参考文献

[ISO14496-15]
ISO/IEC 14496-15:2024 Information technology — Coding of audio-visual objects — Part 15: Carriage of network abstraction layer (NAL) unit structured video in the ISO base media file format. 2024 年 10 月. URL: https://www.iso.org/standard/89118.html
[ITU-T-REC-H.264]
H.264 : Advanced video coding for generic audiovisual services. 2019 年 6 月. URL: https://www.itu.int/rec/T-REC-H.264
[RFC6381]
R. Gellens; D. Singer; P. Frojdh. The 'Codecs' and 'Profiles' Parameters for "Bucket" Media Types. 2011 年 8 月. Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc6381
[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 VideoEncoderConfig {
  AvcEncoderConfig avc;
};


dictionary AvcEncoderConfig {
  AvcBitstreamFormat format = "avc";
};


enum AvcBitstreamFormat {
  "annexb",
  "avc",
};


partial dictionary VideoEncoderEncodeOptions {
  VideoEncoderEncodeOptionsForAvc avc;
};


dictionary VideoEncoderEncodeOptionsForAvc {
  unsigned short? quantizer;
};