RTCOutboundRtpStreamStats: qpSum 属性
RTCOutboundRtpStreamStats 字典的 qpSum 属性是一个值,该值是通过将到目前为止此发送方在与此 RTCOutboundRtpStreamStats 对象对应的视频轨道上生成的每一帧的量化参数(QP)值相加而得出的。
通常,该数字越高,视频数据的压缩程度就越高。
值
一个无符号 64 位整数值,表示 RTCOutboundRtpStreamStats 对象描述的轨道上迄今为止发送的每一帧的量化参数(QP)值的总和。由于 QP 的值通常越大表示压缩因子越高,因此此总和越大,流的压缩程度通常就越高。
注意:此值仅适用于视频媒体。
用法说明
量化是将有损压缩应用于一系列值,从而产生单个量化值的过程。此值取代了值的范围,从而减少了出现在整个数据集中的不同值的数量,使数据更具可压缩性。量化过程和压缩量可以使用一个或多个参数进行控制。
需要注意的是,QP 的值可能会周期性地更改——甚至可能每一帧都更改——因此很难确定压缩的实际程度。您所能做的最好的就是进行估算。您可以使用 RTCSentRtpStreamStats.framesEncoded 的值来获取迄今为止已编码的帧数,然后从中计算平均值。有关执行此操作的函数,请参见下文的计算平均量化。
此外,QP 值的确切含义取决于所使用的编解码器。例如,对于 VP8 编解码器,QP 值可以在 1 到 127 之间,并在帧头元素 "y_ac_qi" 中找到,其值在 RFC 6386, section 19.2 中定义。H.264 使用范围为 0 到 51 的 QP;在这种情况下,它是一个用于在量化过程中派生缩放矩阵的索引。此外,QP 可能不是编解码器用来调整压缩的唯一参数。有关详细信息,请参阅各个编解码器规范。
示例
计算平均量化
下面显示的 calculateAverageQP() 函数计算包含 RTP 流统计信息的对象的平均 QP,如果该对象不描述 RTP 流,则返回 0。
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;
}
规范
| 规范 |
|---|
| WebRTC 统计 API 的标识符 # dom-rtcoutboundrtpstreamstats-qpsum |
浏览器兼容性
加载中…