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).

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

BCD tables only load in the browser

Siehe auch