RTCAudioSourceStats

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

Diese Statistiken können erhalten werden, indem der RTCStatsReport durchlaufen wird, 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 Audio-Informationen über Tracks, die aus der Ferne stammen (die empfangen werden), siehe RTCInboundRtpStreamStats.

Instanz-Eigenschaften

audioLevel Experimentell Optional

Eine Zahl, die den Audiopegel der Medienquelle darstellt.

totalAudioEnergy Experimentell Optional

Eine Zahl, die die gesamte Audioenergie der Medienquelle über die Lebensdauer des Statistikobjekts darstellt.

totalSamplesDuration Experimentell Optional

Eine Zahl, die die Gesamtdauer aller von der Medienquelle erzeugten Samples über die Lebensdauer des Statistikobjekts darstellt.

Allgemeine Eigenschaften von Medienquellen

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

trackIdentifier

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

kind

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

Allgemeine Instanz-Eigenschaften

Die folgenden Eigenschaften sind bei allen Statistikobjekten üblich.

id

Ein String, der das Objekt, das überwacht wird, um diese Statistikmenge zu erzeugen, eindeutig identifiziert.

timestamp

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

type

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

Beschreibung

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

Die Statistiken umfassen auch die akkumulierte Gesamtenergie und die Gesamtsample-Dauer zu einem bestimmten Zeitpunkt. Die Gesamtsummen können verwendet werden, um den durchschnittlichen Audiopegel über die Lebensdauer des Statistikobjekts zu bestimmen. Sie können einen quadratischen Mittelwert (RMS) im selben Maßeinheit wie audioLevel mit der folgenden Formel berechnen:

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

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

Die gesamte Audioenergie des Statistikobjekts wird akkumuliert, indem die Energie jedes Samples über die Lebensdauer des Statistikobjekts hinzugefügt wird, während die Gesamtdauer akkumuliert wird, indem die Dauer jedes Samples hinzugefügt wird. Die Energie jedes Samples wird mit der folgenden Formel bestimmt, wobei sample_level der Pegel des Samples, max_level der höchstintensive kodierbare Wert und duration die Dauer des Samples in Sekunden ist:

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

Der durchschnittliche Audiopegel zwischen zwei verschiedenen getStats()-Aufrufen über einen beliebigen Zeitraum kann mit der folgenden Gleichung berechnet werden:

totalAudioEnergy2-totalAudioEnergy1totalSamplesDuration2-totalSamplesDuration1\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, das von RTCRtpSender.getStats() zurückgegeben wird, durchlaufen könnten, um die Audiquellenstatistiken zu erhalten und dann den audioLevel 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