RTCAudioSourceStats

Das RTCAudioSourceStats-Wörterbuch der WebRTC API liefert Statistikinformationen über einen Audiotrack (MediaStreamTrack), der an einen oder mehrere Sender (RTCRtpSender) angehängt ist.

Diese Statistiken können erhalten werden, indem Sie den RTCStatsReport durchlaufen, der von RTCRtpSender.getStats() oder RTCPeerConnection.getStats() zurückgegeben wird, bis Sie einen Bericht mit dem type von media-source und einem kind von audio finden.

Hinweis: Für Audioinformationen über entfernt bezogene Tracks (die empfangen werden), siehe RTCInboundRtpStreamStats.

Instanz-Eigenschaften

audioLevel Experimentell Optional

Eine Zahl, die das Audiolevel der Medienquelle repräsentiert.

totalAudioEnergy Experimentell Optional

Eine Zahl, die die gesamte Audioenergie der Medienquelle über die Lebensdauer des Statistikobjekts repräsentiert.

totalSamplesDuration Experimentell Optional

Eine Zahl, die die Gesamtdauer aller von der Medienquelle produzierten Proben über die Lebensdauer des Statistikobjekts repräsentiert.

Allgemeine Eigenschaften der Medienquelle

Die folgenden Eigenschaften sind sowohl in RTCAudioSourceStats als auch in RTCVideoSourceStats vorhanden:

trackIdentifier

Ein String, der den id Wert des MediaStreamTrack enthält, das mit der Audioquelle assoziiert ist.

kind

Ein String, der angibt, ob dieses Objekt Statistiken für eine Videoquelle oder eine Medienquelle darstellt. Für ein RTCAudioSourceStats ist dies immer audio.

Allgemeine Instanz-Eigenschaften

Die folgenden Eigenschaften sind allen Statistikobjekten gemeinsam.

id

Ein String, der das Objekt, das überwacht wird, eindeutig identifiziert, um diesen Satz von Statistiken zu erstellen.

timestamp

Ein DOMHighResTimeStamp-Objekt, das den Zeitpunkt angibt, zu dem die Stichprobe für dieses Statistikobjekt entnommen wurde.

type

Ein String mit dem Wert "media-source", der angibt, dass das Objekt eine Instanz von entweder RTCAudioSourceStats oder RTCVideoSourceStats ist.

Beschreibung

Das Interface liefert Statistiken über eine Audiomedienquelle, die an einen oder mehrere Sender angehängt ist. Die Informationen umfassen den aktuellen Audiolevel, gemittelt über eine kurze (implementierungsabhängige) Dauer.

Die Statistiken umfassen auch die akkumulierte Gesamtenergie und Gesamtdauer der Proben zu einem bestimmten Zeitpunkt. Die Gesamtwerte können verwendet werden, um den durchschnittlichen Audiolevel über die Lebensdauer des Statistikobjekts zu bestimmen. Sie können einen quadratischen Mittelwert (RMS) in den gleichen Einheiten wie audioLevel mit der folgenden Formel berechnen:

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

Sie können die akkumulierten Gesamtwerte auch verwenden, um den durchschnittlichen Audiolevel über einen beliebigen Zeitraum zu berechnen.

Die gesamte Audioenergie des Statistikobjekts wird akkumuliert, indem die Energie jeder Probe über die Lebensdauer des Statistikobjekts addiert wird, während die Gesamtdauer akkumuliert wird, indem die Dauer jeder Probe addiert wird. Die Energie jeder Probe wird mit der folgenden Formel bestimmt, wobei sample_level das Level der Probe, max_level der höchstintensitierbare Wert und duration die Dauer der Probe in Sekunden ist:

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

Das durchschnittliche Audiolevel zwischen zwei verschiedenen getStats()-Aufrufen, über jede beliebige Dauer, kann mit der folgenden Gleichung berechnet werden:

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

Beispiele

Dieses Beispiel zeigt, wie Sie das Statistikobjekt durchlaufen können, das von RTCRtpSender.getStats() zurückgegeben wird, um die Audiosourcenstatistiken zu erhalten und dann das audioLevel zu extrahieren.

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;

Spezifikationen

Specification
Identifiers for WebRTC's Statistics API
# dom-rtcaudiosourcestats

Browser-Kompatibilität

BCD tables only load in the browser