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
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, wirdaudioLevelundefinedsein. captureTime-
Ein
DOMHighResTimeStamp, der die Erfassungszeit des Frames relativ zurPerformance.timeOriginangibt. contributingSources-
Ein
Arrayvon Quellen (ssrc), die zum Frame beigetragen haben. Betrachten Sie den Fall einer Konferenzanwendung, die Audio von mehreren Benutzern kombiniert. DiesynchronizationSourcewürde die ssrc der Anwendung enthalten, währendcontributingSourcesdie 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 einemRTCRtpReceiver), der verwendet wurde, um diesen Medienframe zu produzieren, relativ zurPerformance.timeOriginangibt. 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.
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.
{
"captureTime": 19745.400000000373,
"contributingSources": [],
"mimeType": "audio/opus",
"payloadType": 111,
"rtpTimestamp": 1786045165,
"synchronizationSource": 3365032712,
"audioLevel": 0.001584893192461114
}
Spezifikationen
| Spezifikation |
|---|
| WebRTC Encoded Transform> # dom-rtcencodedaudioframe-getmetadata> |