Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

RTCEncodedAudioFrame: getMetadata() Methode

Baseline 2023
Newly available

Since ⁨August 2023⁩, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.

Hinweis: Diese Funktion ist in Dedicated Web Workers verfügbar.

Die getMetadata()-Methode des RTCEncodedAudioFrame-Interfaces gibt ein Objekt zurück, das die mit dem Frame verknüpften Metadaten enthält.

Dies schließt Informationen über den Frame ein, wie z.B. die verwendete Audio-Codierung, die Synchronisationsquelle und beitragende Quellen sowie die Sequenznummer (für eingehende Frames).

Syntax

js
getMetadata()

Parameter

Keine.

Rückgabewert

Ein Objekt mit den folgenden Eigenschaften:

audioLevel

Eine Zahl, die den Audiopegel dieses Frames darstellt. Der Wert liegt zwischen 0 und 1 inklusive (linear), wobei 1,0 0 dBov (Dezibel relativ zur Vollskala (DBFS)) darstellt, 0 Stille repräsentiert und 0,5 ungefähr eine Änderung um 6 dB SPL im Schalldruckpegel von 0 dBov darstellt. Der Wert wird von dem in RFC6464 angegebenen Bereich von -127 bis 0 durch die Gleichung 10^(-rfc_level/20) umgerechnet. Wenn die RFC6464-Header-Erweiterung in den empfangenen Paketen des Frames nicht vorhanden ist, wird audioLevel undefined sein.

captureTime

Ein DOMHighResTimeStamp, das die Erfassungszeit des Frames relativ zu Performance.timeOrigin anzeigt.

contributingSources

Ein Array von Quellen (ssrc), die zum Frame beigetragen haben. Ziehen Sie den Fall einer Konferenzanwendung in Betracht, die Audio von mehreren Benutzern kombiniert. Die synchronizationSource würde die ssrc der Anwendung enthalten, während contributingSources die ssrc-Werte aller einzelnen Audioquellen enthalten würde.

mimeType

Ein String, der den MIME-Typ des verwendeten Codecs wie "audio/opus" enthält.

payloadType

Ein positiver Ganzzahlenwert im Bereich von 0 bis 127, der das Format der RTP-Nutzlast beschreibt. Die Zuordnungen von Werten zu Formaten sind in RFC 3550 definiert, und insbesondere Abschnitt 6: Nutzlasttyp-Definitionen von RFC 3551.

receiveTime

Ein DOMHighResTimeStamp, der den Zeitstempel des zuletzt empfangenen Pakets eines eingehenden Frames (von einem RTCRtpReceiver) anzeigt, das verwendet wurde, um diesen Medienframe zu erzeugen, relativ zu Performance.timeOrigin.

rtpTimestamp

Eine positive ganze Zahl, die den Abtastzeitpunkt des ersten Oktetts im RTP-Datenpaket widerspiegelt (siehe RFC 3550).

sequenceNumber

Die Sequenznummer eines eingehenden Audio-Frames (nicht verwendet für ausgehende Frames), die zur Rekonstruktion der ursprünglichen Sende-Reihenfolge von Frames verwendet werden kann. Dies ist eine Zahl zwischen 0 und 32767. Beachten Sie, dass während Zahlen beim Senden sequentiell zugewiesen werden, sie bei 32767 überlaufen und wieder von 0 beginnen. Daher müssen Sie zur Vergleichung von zwei Frame-Sequenznummern, um zu bestimmen, ob eines nach dem anderen vermutet wird, Seriennummer-Arithmetik verwenden.

synchronizationSource

Ein positiver Ganzzahlenwert, der die Synchronisationsquelle ("ssrc") des Stroms von RTP-Paketen angibt, die durch diesen Frame beschrieben werden. Eine Quelle könnte so etwas wie ein Mikrofon oder eine Mischanwendung sein, die mehrere Quellen kombiniert. Alle Pakete von derselben Quelle teilen dieselbe Zeitquelle und Sequenzraum und können so relativ zueinander geordnet werden. Beachten Sie, dass zwei Frames mit demselben Wert auf dieselbe Quelle verweisen.

Beispiele

Abrufen von Frame-Metadaten

Diese Beispiel-Implementierung eines WebRTC-Codierungs-Transforms zeigt, wie Sie die Frame-Metadaten in einer transform()-Funktion abrufen und protokollieren können.

js
addEventListener("rtctransform", (event) => {
  const transform = new TransformStream({
    async transform(encodedFrame, controller) {
      // Get the metadata and log
      const frameMetaData = encodedFrame.getMetadata();
      console.log(frameMetaData);

      // Enqueue the frame without modifying
      controller.enqueue(encodedFrame);
    },
  });
  event.transformer.readable
    .pipeThrough(transform)
    .pipeTo(event.transformer.writable);
});

Das resultierende Objekt von einem lokalen Mikrofon könnte wie das unten gezeigte aussehen. Beachten Sie, dass es keine beitragenden Quellen gibt, da es nur eine Quelle gibt und keine sequenceNumber, da dies ein ausgehender Frame ist.

json
{
  "captureTime": 19745.400000000373,
  "contributingSources": [],
  "mimeType": "audio/opus",
  "payloadType": 111,
  "rtpTimestamp": 1786045165,
  "synchronizationSource": 3365032712,
  "audioLevel": 0.001584893192461114
}

Spezifikationen

Specification
WebRTC Encoded Transform
# dom-rtcencodedaudioframe-getmetadata

Browser-Kompatibilität

Siehe auch