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 Weitgehend verfügbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit August 2023 browserübergreifend verfügbar.

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

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

Dazu gehören Informationen über den Frame, wie das verwendete Audio-Encoding, 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)) repräsentiert, 0 Stille und 0,5 etwa eine Änderung von 6 dB SPL im Schalldruckpegel von 0 dBov. Der Wert wird über die Gleichung 10^(-rfc_level/20) aus dem in RFC6464 spezifizierten Bereich -127 bis 0 konvertiert. Wenn die RFC6464-Header-Erweiterung in den empfangenen Paketen des Frames nicht vorhanden ist, wird audioLevel undefined sein.

captureTime

Ein DOMHighResTimeStamp, der die Erfassungszeit des Frames relativ zur Performance.timeOrigin angibt.

contributingSources

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

mimeType

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

payloadType

Ein positiver Ganzzahlwert im Bereich von 0 bis 127, der das Format des RTP-Payloads beschreibt. Die Zuordnungen von Werten zu Formaten sind in RFC 3550 definiert und genauer in Abschnitt 6: Payload-Type-Definitionen von RFC 3551.

receiveTime

Ein DOMHighResTimeStamp, der den Zeitstempel des letzten empfangenen Pakets eines eingehenden Frames (von einem RTCRtpReceiver), der verwendet wurde, um diesen Medienframe zu produzieren, relativ zur Performance.timeOrigin angibt.

rtpTimestamp

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

sequenceNumber

Die Sequenznummer eines eingehenden Audioframes (nicht für ausgehende Frames verwendet), die zum Rekonstruieren der ursprünglichen Sendereihenfolge von Frames verwendet werden kann. Dies ist eine Zahl zwischen 0 und 32767. Beachten Sie, dass Zahlen, während sie beim Senden nacheinander zugewiesen werden, bei 32767 überlaufen und wieder bei 0 anfangen. Daher müssen Sie zur Vergleichung zweier Frame-Sequenznummern, um festzustellen, ob eine nach einer anderen angenommen wird, Seriennummernarithmetik verwenden.

synchronizationSource

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

Beispiele

Metadaten eines Frames abrufen

Dieses Beispiel einer WebRTC Encoded Transform-Implementierung zeigt, wie Sie die Metadaten eines Frames in einer transform() Funktion abrufen und protokollieren könnten.

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, weil es nur eine Quelle gibt, und keine sequenceNumber, weil dies ein ausgehender Frame ist.

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

Spezifikationen

Spezifikation
WebRTC Encoded Transform
# dom-rtcencodedaudioframe-getmetadata

Browser-Kompatibilität

Siehe auch