RTCAudioSourceStats

基線 2023 *
新推出

自 ⁨2023 年 5 月⁩起,此功能可在最新的裝置和瀏覽器版本上使用。此功能可能無法在舊版裝置或瀏覽器上使用。

* 此特性的某些部分可能存在不同級別的支援。

WebRTC API 中的 RTCAudioSourceStats 字典提供了有關附加到一個或多個傳送器(RTCRtpSender)的音訊軌道(MediaStreamTrack)的統計資訊。

可以透過迭代 RTCRtpSender.getStats()RTCPeerConnection.getStats() 返回的 RTCStatsReport 來獲取這些統計資訊,直到找到一個 typemedia-sourcekindaudio 的報告。

注意: 有關遠端源軌道(正在接收的)的音訊資訊,請參閱 RTCInboundRtpStreamStats

例項屬性

audioLevel Experimental Optional

一個數字,表示媒體源的音訊級別。

totalAudioEnergy Experimental Optional

一個數字,表示統計物件生命週期內媒體源的總音訊能量。

totalSamplesDuration Experimental Optional

一個數字,表示統計物件生命週期內媒體源產生的所有樣本的總時長。

通用媒體源屬性

以下屬性同時存在於 RTCAudioSourceStatsRTCVideoSourceStats

trackIdentifier

一個字串,包含與音訊源關聯的 MediaStreamTrackid 值。

kind

一個字串,指示此物件是否表示影片源或媒體源的統計資訊。對於 RTCAudioSourceStats,這始終是 audio

常見例項屬性

以下屬性是所有統計物件共有的。

id

一個字串,唯一標識正在監控以生成這組統計資訊的物件。

時間戳

一個 DOMHighResTimeStamp 物件,表示此統計資訊物件樣本的採集時間。

type

一個字串,值為 "media-source",表示該物件是 RTCAudioSourceStatsRTCVideoSourceStats 的一個例項。

描述

該介面提供了有關附加到一個或多個傳送器的音訊媒體源的統計資訊。這些資訊包括當前的音訊級別,平均值持續時間很短(取決於實現)。

統計資訊還包括在特定時間戳下的累積總能量和總樣本時長。這些總和可用於確定統計物件生命週期內的平均音訊級別。您可以使用以下公式計算與 audioLevel 相同單位的均方根 (RMS) 值:

totalAudioEnergytotalSamplesDuration\sqrt{\frac{totalAudioEnergy}{totalSamplesDuration}}

您還可以使用累積的總和來計算任意時間段內的平均音訊級別。

統計物件的總音訊能量是透過將統計物件生命週期內每個樣本的能量相加而累積的,而總時長是透過將每個樣本的時長相加而累積的。每個樣本的能量使用以下公式確定,其中 sample_level 是樣本的級別,max_level 是最高強度的可編碼值,duration 是樣本的時長(秒):

duration×(sample_levelmax_level)2duration \times⁢ \left(\left(\right. \frac{sample{\_}level}{max{\_}level} \left.\right)\right)^{2}

可以使用以下方程計算任意兩個不同的 getStats() 呼叫之間,任意時長的平均音訊級別:

totalAudioEnergy2-totalAudioEnergy1totalSamplesDuration2-totalSamplesDuration1\sqrt{\frac{\left(totalAudioEnergy\right)_{2} - \left(totalAudioEnergy\right)_{1}}{\left(totalSamplesDuration\right)_{2} - \left(totalSamplesDuration\right)_{1}}}

示例

此示例展示瞭如何迭代從 RTCRtpSender.getStats() 返回的統計物件以獲取音訊源統計資訊,然後提取 audioLevel

js
// where sender is an RTCRtpSender
const stats = await sender.getStats();
let audioSourceStats = null;

stats.forEach((report) => {
  if (report.type === "media-source" && report.kind==="audio") {
    audioSourceStats = report;
    break;
  }
});

const audioLevel = audioSourceStats?.audioLevel;

規範

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

瀏覽器相容性