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。

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;
}

規範

規範
WebRTC 統計 API 的識別符號
# dom-rtcoutboundrtpstreamstats-qpsum

瀏覽器相容性