RTCRtpStreamStats: qpSum 属性

qpSumRTCRtpStreamStats 字典的一个属性,它是一个值,该值通过将与该 RTCRtpStreamStats 对象对应的视频轨道上迄今为止发送或接收的每个帧的量化参数 (QP) 值加起来生成。

通常,此数字越高,表示视频数据压缩得越厉害。

一个无符号 64 位整数,表示到目前为止在由 RTCRtpStreamStats 对象描述的轨道上发送或接收的每个帧的量化参数 (QP) 值之和。由于 QP 的值通常越大表示压缩因子越高,因此此总和越大,通常表示流的压缩程度越高。

注意:此值仅适用于视频媒体。

用法说明

量化 是对一系列值应用有损压缩的过程,从而产生一个量子值。此值取代了一系列值,从而减少了整体数据集中出现的不同值的数目,使数据更容易压缩。可以使用一个或多个参数来控制量化过程和压缩量。

需要注意的是,QP 的值可能会定期变化,甚至每帧都会变化,因此很难确定压缩的程度。您所能做的就是进行估计。例如,您可以使用 RTCReceivedRtpStreamStats.framesDecoded(如果接收媒体)或 RTCSentRtpStreamStats.framesEncoded(如果发送媒体)的值来获取迄今为止处理的帧数,并由此计算平均值。有关执行此操作的函数,请参阅下面的 计算平均量化

此外,QP 值的确切含义取决于所使用的 编解码器。例如,对于 VP8 编解码器,QP 值可以是 1 到 127 之间的任何值,并且可以在帧头元素 "y_ac_qi" 中找到,其值在 RFC 6386,第 19.2 节 中定义。H.264 使用范围为 0 到 51 的 QP;在这种情况下,它是一个索引,用于在量化过程中推导出缩放矩阵。此外,QP 并非编解码器用于调整压缩的唯一参数。有关详细信息,请参阅各个编解码器规范。

示例

计算平均量化

下面显示的 calculateAverageQP() 函数计算给定 RTCRtpStreamStats 对象的平均 QP,如果该对象不描述 RTP 流,则返回 0。

js
function calculateAverageQP(stats) {
  let frameCount = 0;

  switch (stats.type) {
    case "inbound-rtp":
    case "remote-inbound-rtp":
      frameCount = stats.framesDecoded;
      break;
    case "outbound-rtp":
    case "remote-outbound-rtp":
      frameCount = stats.framesEncoded;
      break;
    default:
      return 0;
  }

  return status.qpSum / frameCount;
}

规范

未找到规范

未找到 api.RTCRtpStreamStats.qpSum 的规范数据。
检查此页面是否存在问题 或将缺少的 spec_url 贡献到 mdn/browser-compat-data。同时确保规范包含在 w3c/browser-specs.

浏览器兼容性

BCD 表格仅在浏览器中加载