MediaStreamTrack 内容提示

W3C 工作草案

关于此文档的更多详情
此版本:
https://www.w3.org/TR/2025/WD-mst-content-hint-20250919/
最新发布版本:
https://www.w3.org/TR/mst-content-hint/
最新编辑草案:
https://w3c.github.io/mst-content-hint/
历史:
https://www.w3.org/standards/history/mst-content-hint/
提交历史
测试套件:
https://github.com/web-platform-tests/wpt/tree/master/webrtc/
编辑:
Harald Alvestrand (Google)
前任编辑:
Peter Boström (Google)
反馈:
GitHub w3c/mst-content-hint拉取请求新议题开放议题
public-media-capture@w3.org 并使用主题行 [mst-content-hint]存档

摘要

本规范扩展 MediaStreamTrack 以提供一个 可选提示,用于说明在没有足够资源实现完美再现时, 用户偏好媒体应如何被处理。

此可选提示允许 MediaStreamTrack 接收端,例如 RTCPeerConnection (定义于 [webrtc])或 MediaRecorder (定义于 [mediastream-recording]),在处理某条轨道的音频或 视频 内容时,选择适合用户偏好的处理参数。

本文档状态

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

本文档由 Web 实时 通信工作组作为 一份工作草案发布,并使用 推荐标准轨道

作为工作草案发布并不 意味着获得 W3C 及其成员的认可。

这是一份草案文档,可能会在任何时候被其他 文档更新、替换或废弃。除作为一项进行中的工作外, 不宜引用本文档。

本文档由一个依据 W3C 专利 政策运作的组制作。 W3C 维护着一份 与该组交付成果相关的任何专利披露的公开列表; 该页面还包括 披露专利的说明。任何实际 知晓某项专利、且该个人认为该专利包含 必要权利要求的个人, 必须按照 W3C 专利政策第 6 节披露相关信息。

本文档受 2025年8月18日 W3C 流程文档管辖。

1. 引言

用于处理语音和音乐的算法差异很大。 为语音类型内容开发的回声消除算法可能无法 很好地处理音乐,而噪声抑制算法可能会移除小军鼓声 或其他“噪声型”内容。虽然这会让语音更易懂, 但对音乐信号来说并不太合适。

对于视频,网络摄像头内容通常需要去噪,并且即使被缩小或 使用较高量化级别时也通常仍可辨识。 对包含大量文本内容的演示文稿或网页的屏幕录制内容而言, 如果量化级别过高,或内容被缩小或因其他原因变得模糊, 则完全无法辨识。

在没有媒体内容自动检测的情况下,MediaStreamTrack 使用方只能进行有根据的猜测。该猜测可能基于这样的 假设:屏幕录制内容,例如 chrome.desktopCapture,包含文本内容,因此必须使用较低 量化级别,并大量丢弃帧以满足比特率 要求。另一种假设是,常规 USB 视频设备提供的是 网络摄像头视频,因此较高量化级别和缩小是 可接受的。

虽然这种有根据的猜测通常是合适的,但当其不正确时, 会导致次优设置。这表现为:在屏幕录制高运动内容(例如电影) 或流式传输视频游戏并将其当作文本处理时,会出现大量丢帧。 另一方面,将高度细节化的内容当作常规 网络摄像头视频处理,则会在为满足比特率 要求而进行量化或缩小时,导致内容过于模糊而无法阅读。 当 HDMI 视频采集卡被视为 USB 网络摄像头,但实际上正在屏幕录制 网页文本时,也可能发生这种不匹配。

缩小时丢失文本可辨性。
1 虽然在低比特率场景中可以通过缩小来保留运动, 但此示例说明了将其错误地应用于细节内容时会丢失文本可辨性。 示例显示了 100%、50% 和 25% 的三次缩小, 分别对应于从 HD 缩小到 VGA 和 QVGA 分辨率。

在某些情况下,Web 应用可以作出更有根据的猜测,或获取 用户输入,以告知使用方正在编码的是哪类内容。一个 流式传输视频游戏内容的 Web 应用,能够以牺牲单个帧细节为代价, 保留桌面采集中的运动。一个 音乐工作室应用,能够防止噪声抑制从音乐轨道中 移除小军鼓声。

这些设置并不打算完全取代编码器级别的设置, 而是以一种更简单的提示来补充它们;这种提示不需要 对视频编码器、音频处理步骤或 更广泛的调优有广泛了解。

本规范的单独一节描述了 处理 MediaStreamTrack 的特定组件的预期行为。

2. 合规性

除了标记为非规范性的章节外,本规范中的所有创作指南、图示、示例和注释均为非规范性的。 本规范中的其他所有内容均为规范性的。

本文档中的关键词 MAYMUSTSHOULDSHOULD NOT 应按 BCP 14 [RFC2119] [RFC8174] 中所述进行解释,且仅当它们如这里所示以 全部大写形式出现时才如此。

3. 对 MediaStreamTrack 的扩展

WebIDLpartial interface MediaStreamTrack {
  attribute DOMString contentHint;
};

本规范扩展了 MediaStreamTrack 并使用 其 kind 属性,如 [GETUSERMEDIA] 中所定义。

每个 MediaStreamTrack 都有一个关联的 应用设置的 内容提示,其初始值为 "",表示未设置。 此 应用设置的内容提示对应于 MediaStreamTrackcontentHint 属性, Web 应用可使用该属性提供一个提示,说明轨道中包含 哪种类型的内容,以指导 MediaStreamTrack 使用方应如何处理它。

应用设置的内容提示的有效值取决于所包含 MediaStreamTrackkind。 在将 contentHint 设置为 value 时,

  1. 如果此 MediaStreamTrackkind 属性为 "audio",且 value 不是 """speech""speech-recognition""music" 之一,则中止这些步骤。
  2. 如果此 MediaStreamTrackkind 属性为 "video",且 value 不是 """motion""detail""text" 之一,则中止这些步骤。
  3. 将此 MediaStreamTrack 的 应用设置的内容提示设置为 value
  4. 实现应根据 其应用设置的内容提示的新值,调整其对如何处理此 MediaStreamTrack 内容的决策。此适配应在合理情况下尽快发生, 例如在接下来几个已采集的视频帧或音频缓冲区内。

在获取 contentHint 时,

  1. 返回此 MediaStreamTrack应用设置的内容提示

注意,应用设置的内容提示的初始值为 "",对应于未提供任何提示。它 不会默认采用实现对所包含内容类型作出的最佳猜测。

3.1 音频内容提示

音频内容提示仅在 MediaStreamTrack 包含音频轨道时适用。

音频内容提示
""

未提供任何提示,实现应对如何处理所包含的音频数据作出 信息最充分的猜测。这可以根据轨道的打开方式推断, 也可以通过进行内容分析来推断。

"speech"

应将该轨道视为包含语音数据。使用 此信号时,应用噪声抑制或提升 输入信号的可懂度可能是合适的。

"speech-recognition"

应将该轨道视为包含用于机器 语音识别的数据。使用此信号时, 提升输入信号用于 转录的可懂度,并关闭用于 人类收听的音频处理组件,可能是合适的。

"music"

应将该轨道视为包含音乐数据。通常这可能 意味着调优或关闭用于处理语音数据的 音频处理组件,以防止音频被失真。

3.2 视频内容提示

视频内容提示仅在 MediaStreamTrack 包含视频轨道时适用。

视频内容提示
""

未提供任何提示,实现应对所包含的视频内容应如何处理作出 信息最充分的猜测。例如,这可以根据轨道的打开方式推断, 也可以通过进行内容分析来推断。

"motion"

应将该轨道视为包含运动很 重要的视频。这通常是网络摄像头视频、电影或视频游戏。 为了尽可能保留运动,同时仍保持目标 比特率,量化伪影和缩小是可接受的。 在低比特率期间必须作出折中时,会把更多 精力用于保留帧率,而不是边缘质量和细节。

"detail"

应将该轨道视为视频细节格外重要。 这通常适用于包含文本内容的演示文稿或网页、 绘画或线条艺术。此设置通常会优化 最终单个帧中的细节,而不是平滑播放。 应避免会使小文本或线条 艺术无法辨识的量化或缩小伪影。

"text"

应将该轨道视为视频细节格外重要, 且明显锐利边缘和颜色一致的区域可能 经常出现。 这通常适用于包含文本 内容的演示文稿或网页。此设置通常会优化 最终单个帧中的细节,而不是平滑 播放,并且可以利用针对 文本渲染优化的编码器工具。 应避免会使小文本 或线条艺术无法辨识的量化或缩小伪影。
注意,不同文字系统对于渲染需要多细致才能实现可读性 有不同要求;此约束并不生成任何 保证,保证所渲染文本对任何特定文字系统都可读。

4. 基于 content-hint 的 其他组件行为

4.1 MediaStreamTrack 的行为

在为 MediaStreamTrack 设置 contentHint 值时, UA MUST 按如下方式应用默认值

要对约束 c 应用 默认值 且值为 t,执行以下步骤:

每当随后运行“apply constraints”算法时, 如果所记住的值 t 此时是允许值, UA MUST 选择该值。

在设置 contentHint 的值为 "" 时,会移除 t 的所有已记住值。

4.2 编码时的降级偏好

在编码视频时,编码器会配置多个 参数;在本文中,我们会特别指出分辨率、帧率和 “编码参数”;后者是实现定义的,但可以 同时影响结果视频的质量、编码所需的资源, 以及视频消耗的比特率。这里,我们 将其描述为较高值会带来更好质量,但也带来更高 比特率。通常,UA 会尝试最大化所有这些参数,以提供 最佳用户体验。

当某些约束(带宽、CPU)阻止使用最 佳参数进行编码时,编码器必须选择如何修改 编码参数。在不受限制的场景中,较高分辨率和 帧率可带来更高质量,但如果带宽受限, 降低帧率和分辨率在许多情况下可以允许以某种方式调整编码 参数,使得在给定目标比特率下整体视频质量 得到提升。

本节定义用于描述该选择的术语,以及一个 可在 API 中用于指示该选择的 enum。

WebIDLenum RTCDegradationPreference {
  "maintain-framerate",
  "maintain-resolution",
  "balanced",
  "maintain-framerate-and-resolution"
};
RTCDegradationPreference 枚举描述
枚举值 描述
maintain-framerate

降低分辨率以维持帧率。用户 代理 SHOULD 偏好降低分辨率,以便 在网络约束内优化 视频质量和性能。

maintain-resolution

降低帧率以维持分辨率。用户 代理 SHOULD 偏好降低帧率,以便 在网络约束内优化 视频质量和性能。

balanced

以帧率和分辨率的平衡方式降级。用户代理 SHOULD 偏好以帧率和 分辨率的平衡方式进行降低, 以便在网络约束内优化视频质量和性能。

maintain-framerate-and-resolution

不考虑视频 质量而维持帧率和分辨率。用户代理 SHOULD NOT 为了质量 和性能原因而偏好降低帧率 或分辨率,但如有必要,为避免过度使用网络和 编码器资源,MAY 在编码前丢弃帧。

RTCRtpSendParameters 定义了一个属性, 允许为 RTCRtpSender 显式指示 此选择:
WebIDLpartial dictionary RTCRtpSendParameters {
        RTCDegradationPreference degradationPreference;
       };

4.2.1 字典 RTCRtpSendParameters 的新成员

degradationPreference ,类型为 RTCDegradationPreference

当带宽受限且 RTCRtpSender 需要在降低分辨率 或降低帧率之间作出选择时, degradationPreference 指示偏好 哪一种。

4.3 RTCPeerConnection 的行为

传输某个 MediaStreamTrackRTCRtpSender,如果该 MediaStreamTrack 已设置 contentHint 属性,则 MUST 使用以下降级偏好,除非发送方 参数中已设置显式的 degradationPreference 属性:

4.4 MediaStreamRecorder 的行为

对于属性值为 "text" 的视频轨道,如果 编码编解码器是 AV1,则激活用于 "text" 模式的编码工具。

5. 安全与隐私 考量

本规范添加了一个 API,用户可以通过该 API 向 用户代理发送信息。此信息不会被 传送到其他地方,也不会被存储在任何永久 位置。

通过探测此 API,客户端可能获得一些关于 用户代理如何实现本规范的信息,这可能让其 对用户代理的配置有所了解。除此之外, 不会通过此 API 向客户端暴露任何用户代理 信息或数据,并且该 API 不会提供对浏览器 UI 的任何访问, 不会影响用户代理的安全特性,也不会影响 临时标识符的生成。

此 API 不区分第一方、第三方 或隐身上下文;它在所有这些 情况下都表现相同。

使用此 API 不会处理任何个人身份信息或其他 敏感信息。

A. 参考文献

A.1 规范性参考文献

[GETUSERMEDIA]
媒体捕获与流。 Cullen Jennings; Jan-Ivar Bruaroey; Henrik Boström; youenn fablet. W3C. 2025年9月11日。CRD。URL: https://www.w3.org/TR/mediacapture-streams/
[infra]
Infra 标准。Anne van Kesteren; Domenic Denicola. WHATWG. 现行标准。URL: https://infra.spec.whatwg.org/
[RFC2119]
用于 RFC 中表示 要求级别的关键词。S. Bradner. IETF. 1997年3月。最佳当前实践。URL: https://www.rfc-editor.org/rfc/rfc2119
[RFC8174]
RFC 2119 关键词中大小写的歧义。B. Leiba. IETF. 2017年5月。最佳当前实践。URL: https://www.rfc-editor.org/rfc/rfc8174
[webidl]
Web IDL 标准。Edgar Chen; Timothy Gu. WHATWG. 现行标准。URL: https://webidl.spec.whatwg.org/
[webrtc]
WebRTC:浏览器中的实时 通信。Cullen Jennings; Jan-Ivar Bruaroey; Henrik Boström; Florent Castelli. W3C. 2025年3月13日。W3C 推荐标准。URL: https://www.w3.org/TR/webrtc/

A.2 资料性参考文献

[mediastream-recording]
MediaStream 录制。 Miguel Casas-sanchez. W3C. 2025年4月17日。W3C 工作草案。URL: https://www.w3.org/TR/mediastream-recording/