RTCEncodedAudioFrame
Hinweis: Dieses Feature ist verfügbar in Dedicated Web Workers.
Der RTCEncodedAudioFrame
der WebRTC API repräsentiert einen codierten Audio-Frame in der WebRTC-Empfänger- oder Sender-Pipeline, der mit einem WebRTC Encoded Transform modifiziert werden kann.
Das Interface bietet Methoden und Eigenschaften, um Metadaten über den Frame zu erhalten, wodurch sein Format und seine Reihenfolge in der Sequenz der Frames bestimmt werden können. Die data
-Eigenschaft ermöglicht den Zugriff auf die codierten Frame-Daten als Puffer, die möglicherweise verschlüsselt oder auf andere Weise durch einen Transform verändert wurden.
Instanz-Eigenschaften
RTCEncodedAudioFrame.timestamp
Nur lesbar Veraltet Nicht standardisiert-
Gibt den Zeitpunkt zurück, zu dem die Abtastung des Frames begann.
RTCEncodedAudioFrame.data
-
Gibt einen Puffer zurück, der die codierten Frame-Daten enthält.
Instanz-Methoden
RTCEncodedAudioFrame.getMetadata()
-
Gibt die Metadaten zurück, die mit dem Frame verbunden sind.
Beispiele
Dieses Codebeispiel zeigt einen Handler für das rtctransform
-Ereignis in einem Worker
, der einen TransformStream
implementiert und codierte Frames durch diesen von event.transformer.readable
zu event.transformer.writable
leitet (event.transformer
ist ein RTCRtpScriptTransformer
, das Gegenstück auf der Worker-Seite zu RTCRtpScriptTransform
).
Wenn der Transformer in einen Audiostream eingefügt ist, wird die transform()
-Methode mit einem RTCEncodedAudioFrame
aufgerufen, sobald ein neuer Frame in event.transformer.readable
eingereiht wird. Die transform()
-Methode zeigt, wie dieser gelesen, mit einer fiktiven Verschlüsselungsfunktion modifiziert und dann in den Controller eingereiht werden kann (dies leitet ihn letztlich zu event.transformer.writable
und dann zurück in die WebRTC-Pipeline).
addEventListener("rtctransform", (event) => {
const async 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 |
Browser-Kompatibilität
BCD tables only load in the browser