RTCCodecStats

Baseline 广泛可用 *

此特性已经十分成熟,可在许多设备和浏览器版本上使用。自 2022 年 3 月起,它已在各浏览器中可用。

* 此特性的某些部分可能存在不同级别的支持。

RTCCodecStats 字典是 WebRTC API 的一部分,它提供了与关联的 RTCPeerConnection 对象正在发送或接收的 RTP 流所使用的编解码器相关的统计信息。

这些统计信息可以通过迭代 RTCPeerConnection.getStats() 返回的 RTCStatsReport 对象来获取,直到找到一个 typecodec 的条目。

可以通过匹配编解码器的 id 属性与入站或出站流统计信息(本地和远程)的 codecId 属性来关联编解码器统计信息。例如,如果 RTCInboundRtpStreamStats.codecId 与同一报告中的 RTCCodecStats.id 匹配,那么我们就知道该编解码器正在此对等连接的入站流上使用。如果没有任何流的 codecId 引用了编解码器统计信息,那么该编解码器统计信息对象将被删除;如果编解码器再次使用,则会使用相同的 id 重新创建统计信息对象。

在同一传输的媒体部分中,多个 RTP 流可能会引用同一个编解码器对象。实际上,用户代理应该为每个传输的每个有效载荷类型合并信息到一个“codec”条目中(除非发送或接收时 sdpFmtpLine 不同,在这种情况下,编码和解码需要不同的编解码器)。请注意,其他传输将使用它们自己独立的 RTCCodecStats 对象。

实例属性

channels 可选

一个正数,表示编解码器支持的通道数。

clockRate 可选

一个正数,包含媒体采样率。

mimeType

一个字符串,包含媒体 MIME 类型/子类型,例如 video/VP8。

payloadType

一个介于 0 和 127 之间的正整数值,表示在 RTP 编码或解码中使用的有效载荷类型。

sdpFmtpLine 可选

一个字符串,包含编解码器的 SDP"a=fmtp" 行的格式特定参数(如果存在)。

transportId

一个字符串,包含正在使用此编解码器的传输的唯一标识符。这可以用来匹配相应的 RTCTransportStats 对象。

常见实例属性

以下属性是所有 WebRTC 统计信息对象共有的(有关更多信息,请参见 RTCStatsReport

id

一个字符串,唯一标识正在监控以生成这组统计信息的对象。

时间戳

一个 DOMHighResTimeStamp 对象,表示此统计信息对象样本的采集时间。

type

一个字符串,值为 "codec",表示该对象包含的统计信息类型。

示例

给定一个变量 myPeerConnection,它是 RTCPeerConnection 的一个实例,下面的代码使用 await 等待统计信息报告,然后使用 RTCStatsReport.forEach() 迭代它。然后,它过滤字典,仅保留类型为 codec 的报告,并记录结果。

js
const stats = await myPeerConnection.getStats();

stats.forEach((report) => {
  if (report.type === "codec") {
    // Log the codec information
    console.log(report);
  }
});

规范

规范
WebRTC 统计 API 的标识符
# dom-rtcstatstype-codec

浏览器兼容性

另见