RTCEncodedVideoFrame: getMetadata() 方法

Baseline 2023
新推出

自 2023 年 8 月起,此功能已在最新的设备和浏览器版本中可用。此功能可能不适用于旧设备或浏览器。

注意:此功能在 专用 Web Workers 中可用。

RTCEncodedVideoFrame 接口的 getMetadata() 方法返回一个对象,其中包含与该帧关联的元数据。

这包括有关帧的信息,例如其大小、视频编码、构建完整图像所需的其他帧、时间戳以及其他信息。

语法

js
getMetadata()

参数

无。

返回值

具有以下属性的对象:

frameId

一个表示此帧 ID 的正整数值。

dependencies

一个正整数的 Array,指示此帧所依赖的帧的 frameIds。对于关键帧,这将是空的,因为关键帧包含构建图像所需的所有信息。对于增量帧,这将列出渲染此帧所需的所有帧。可以使用 RTCEncodedVideoFrame.type 来确定帧的类型。

width

一个表示帧宽度的正整数。最大值为 65535。

height

一个表示帧高度的正整数。最大值为 65535。

spatialIndex

一个表示帧的空间索引的正整数。某些编解码器允许生成不同分辨率层的帧。当需要降低比特率时,可以有选择地丢弃较高层的帧,同时保持可接受的视频质量。

temporalIndex

一个表示帧的时间索引的正整数。某些编解码器根据丢弃帧是否会阻止其他帧被解码来将帧分组为层。当需要降低比特率时,可以有选择地丢弃较高层的帧,同时保持可接受的视频质量。

synchronizationSource

一个表示此编码视频帧所描述的 RTP 数据包流的同步源("ssrc")的正整数值。源可能是摄像头或麦克风,或者某种组合了多个源的混合器应用程序。来自同一源的所有数据包共享相同的时间源和序列空间,因此可以相对排序。注意,具有相同值的两个帧引用同一源(有关更多信息,请参阅 RTCInboundRtpStreamStats.ssrc)。

payloadType

一个表示 RTP 有效载荷格式的 0 到 127 范围内的正整数值。值与格式的映射在 RFC3550 中定义。

contributingSources

已为该帧做出贡献的源(ssrc)的 Array。考虑一个组合了多个用户音频和视频的会议应用程序。synchronizationSource 将包含应用程序的 ssrc,而 contributingSources 将包含所有单独的视频和音频源的 ssrc 值。

时间戳

原始帧的媒体呈现时间戳(PTS),以微秒为单位,匹配对应于此帧的原始帧的时间戳。这用于同步属于同一演示文稿的单独的视频、音频、字幕和其他流。

示例

这个示例 WebRTC 编码转换 实现展示了如何在 transform() 函数中获取帧元数据并将其记录下来。

js
addEventListener("rtctransform", (event) => {
  const transform = new TransformStream({
    async transform(encodedFrame, controller) {
      // Get the metadata and log
      const frameMetaData = encodedFrame.getMetadata();
      console.log(frameMetaData);

      // Enqueue the frame without modifying
      controller.enqueue(encodedFrame);
    },
  });
  event.transformer.readable
    .pipeThrough(transform)
    .pipeTo(event.transformer.writable);
});

来自本地摄像头的最终对象可能如下所示。请注意,由于只有一个源,因此没有 contributing sources。

json
{
  "contributingSources": [],
  "dependencies": [405],
  "frameId": 406,
  "height": 480,
  "payloadType": 120,
  "spatialIndex": 0,
  "synchronizationSource": 3956716931,
  "temporalIndex": 0,
  "width": 640
}

规范

规范
WebRTC Encoded Transform
# dom-rtcencodedvideoframe-getmetadata

浏览器兼容性

另见