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 |
瀏覽器相容性
載入中…