RTCInboundRtpStreamStats: qpSum 属性
qpSum
是 RTCInboundRtpStreamStats
字典的一个属性,它是一个通过将与该 RTCInboundRtpStreamStats
对象对应的视频轨迹上迄今为止发送或接收的每一帧的量化参数 (QP) 值相加生成的。
通常,此数字越大,视频数据压缩程度越高。
值
一个无符号 64 位整数,表示由 RTCInboundRtpStreamStats
对象描述的轨迹上迄今为止发送或接收的每一帧的量化参数 (QP) 值之和。由于 QP 值通常越大表示压缩因子越高,因此此总和越大,通常表示流的压缩程度越高。
注意:此值仅适用于视频媒体。
使用说明
量化 是对一系列值应用有损压缩的过程,从而生成单个量子值。此值取代一系列值,从而减少整体数据集中出现的不同值的数目,使数据更易于压缩。可以使用一个或多个参数来控制量化过程和压缩量。
需要注意的是,QP 值会定期发生变化,甚至每一帧都会发生变化,因此很难确定压缩的程度。您所能做的最好的事情就是进行估计。例如,如果您正在接收媒体,可以使用 RTCReceivedRtpStreamStats.framesDecoded
的值,或者如果您正在发送媒体,可以使用 RTCSentRtpStreamStats.framesEncoded
的值来获取迄今为止处理的帧数,并从中计算平均值。有关执行此操作的函数,请参见下面的计算平均量化。
此外,QP 值的确切含义取决于所使用的编解码器。例如,对于 VP8 编解码器,QP 值可以是 1 到 127 之间的任何值,并且可以在帧头元素 "y_ac_qi"
中找到,其值在RFC 6386,第 19.2 节中定义。H.264 使用 QP 值范围为 0 到 51;在这种情况下,它是一个用于在量化过程中导出缩放矩阵的索引。此外,QP 可能不是编解码器用来调整压缩的唯一参数。有关详细信息,请参见各个编解码器的规范。
示例
计算平均量化
下面显示的 calculateAverageQP()
函数计算给定包含 RTP 流统计信息的 RTCStatsReport
对象的平均 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-rtcinboundrtpstreamstats-qpsum |
浏览器兼容性
BCD 表格仅在启用了 JavaScript 的浏览器中加载。