RTCEncodedAudioFrame

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

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 Schreibgeschützt 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).

js
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

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
RTCEncodedAudioFrame
RTCEncodedAudioFrame() constructor
Experimental
data
getMetadata
timestamp
DeprecatedNon-standard

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support
Experimental. Expect behavior to change in the future.
Non-standard. Check cross-browser support before using.
Deprecated. Not for use in new websites.

Siehe auch