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
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, wirdaudioLevelundefinedsein. captureTime-
Ein
DOMHighResTimeStamp, das die Erfassungszeit des Frames relativ zuPerformance.timeOriginanzeigt. contributingSources-
Ein
Arrayvon Quellen (ssrc), die zum Frame beigetragen haben. Ziehen Sie den Fall einer Konferenzanwendung in Betracht, die Audio von mehreren Benutzern kombiniert. DiesynchronizationSourcewürde die ssrc der Anwendung enthalten, währendcontributingSourcesdie 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 einemRTCRtpReceiver) anzeigt, das verwendet wurde, um diesen Medienframe zu erzeugen, relativ zuPerformance.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.
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.
{
"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
Loading…