RTCEncodedAudioFrame
Baseline 2023Newly 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.
Das RTCEncodedAudioFrame
der WebRTC API repräsentiert einen kodierten Audio-Frame im Empfangs- oder Sendepipeline von WebRTC, der mithilfe eines WebRTC Encoded Transform modifiziert werden kann.
Die Schnittstelle stellt Methoden und Eigenschaften zur Verfügung, um Metadaten des Frames abzurufen, was es ermöglicht, das Format und die Reihenfolge innerhalb der Sequenz der Frames zu bestimmen. Die data
-Eigenschaft bietet Zugriff auf die kodierten Frame-Daten als Buffer, der möglicherweise verschlüsselt oder anderweitig durch einen Transform modifiziert wurde.
Instanzeigenschaften
RTCEncodedAudioFrame.timestamp
Schreibgeschützt Veraltet Nicht standardisiert-
Gibt den Zeitstempel zurück, zu dem die Abtastung des Frames begonnen hat.
RTCEncodedAudioFrame.data
-
Gibt einen Buffer zurück, der die kodierten Frame-Daten enthält.
Instanzmethoden
RTCEncodedAudioFrame.getMetadata()
-
Gibt die mit dem Frame verbundenen Metadaten zurück.
Beispiele
Dieser Codeausschnitt zeigt einen Handler für das rtctransform
-Ereignis in einem Worker
, der einen TransformStream
implementiert und kodierte Frames von event.transformer.readable
zu event.transformer.writable
leitet (event.transformer
ist ein RTCRtpScriptTransformer
, das Gegenstück auf der Worker-Seite von RTCRtpScriptTransform
).
Wenn der Transformer in einen Audio-Stream eingesetzt wird, wird die transform()
-Methode aufgerufen mit einem RTCEncodedAudioFrame
, wann immer ein neuer Frame in event.transformer.readable
eingereiht wird. Die transform()
-Methode zeigt, wie dies gelesen, mithilfe einer fiktiven Verschlüsselungsfunktion modifiziert und dann im Controller eingereiht werden könnte (dies leitet es letztlich durch zu event.transformer.writable
und dann zurück in die WebRTC-Pipeline).
addEventListener("rtctransform", (event) => {
const transform = new TransformStream({
async transform(encodedFrame, controller) {
// Reconstruct the original frame.
const view = new DataView(encodedFrame.data);
// Construct a new buffer
const newData = new ArrayBuffer(encodedFrame.data.byteLength);
const newView = new DataView(newData);
// Encrypt frame bytes using the encryptFunction() method (not shown)
for (let i = 0; i < encodedFrame.data.byteLength; ++i) {
const encryptedByte = encryptFunction(~view.getInt8(i));
newView.setInt8(i, encryptedByte);
}
encodedFrame.data = newData;
controller.enqueue(encodedFrame);
},
});
event.transformer.readable
.pipeThrough(transform)
.pipeTo(event.transformer.writable);
});
Beachten Sie, dass vollständigere Beispiele in Using WebRTC Encoded Transforms bereitgestellt werden.
Spezifikationen
Specification |
---|
WebRTC Encoded Transform # rtcencodedaudioframe |