RTCInboundRtpStreamStats: qpSum 屬性
RTCInboundRtpStreamStats 字典的 qpSum 屬性表示與此 RTCInboundRtpStreamStats 物件對應的影片軌道上傳送或接收的每一幀的量化引數 (QP) 值的總和。
一般來說,數字越大表示影片資料被壓縮得越厲害。
注意:此值僅適用於影片媒體。
值
一個正整數。
描述
量化是應用有失真壓縮到一系列值,從而產生一個單一的量化值的過程。這個值取代了原始值的範圍,從而減少了資料集中出現的不同值的數量,使得資料更易於壓縮。量化過程和壓縮量可以透過一個或多個引數來控制。
需要注意的是,QP 的值可能會週期性地變化——甚至可能每幀都變化——因此很難確切知道壓縮的程度。最好的方法是進行估算。例如,您可以使用 RTCReceivedRtpStreamStats.framesDecoded 的值(如果您正在接收媒體,或者 RTCSentRtpStreamStats.framesEncoded 如果正在傳送媒體)來獲取到目前為止處理的幀數,然後從中計算平均值。請參閱下面的 計算平均量化,其中包含一個執行此操作的函式。
此外,QP 值的確切含義取決於所使用的 編解碼器。例如,對於 VP8 編解碼器,QP 值可以從 1 到 127 之間,並在幀頭元素 "y_ac_qi" 中找到,其值在 RFC 6386, section 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;
}
請注意,QP 值可能因編解碼器而異。因此,此值只有在與同一編解碼器進行比較時才可能有用。
規範
| 規範 |
|---|
| WebRTC 統計 API 的識別符號 # dom-rtcinboundrtpstreamstats-qpsum |
瀏覽器相容性
載入中…