RTCEncodedAudioFrame

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

Der RTCEncodedAudioFrame der WebRTC API repräsentiert einen kodierten Audio-Frame in der WebRTC-Empfänger- oder Sender-Pipeline, der mit einem WebRTC Encoded Transform modifiziert werden kann.

Die Schnittstelle bietet Methoden und Eigenschaften, um Metadaten über den Frame abzurufen, sodass dessen Format und Reihenfolge in der Frame-Sequenz bestimmt werden können. Die data-Eigenschaft bietet Zugriff auf die kodierten Frame-Daten als ein Puffer, der möglicherweise durch eine Transformation verschlüsselt oder anderweitig 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 Puffer zurück, der die kodierten Frame-Daten enthält.

Instanzmethoden

RTCEncodedAudioFrame.getMetadata()

Gibt die mit dem Frame verknüpften Metadaten zurück.

Beispiele

Dieses Code-Snippet zeigt einen Handler für das rtctransform-Ereignis in einem Worker, der einen TransformStream implementiert und kodierte Frames durch ihn von event.transformer.readable zu event.transformer.writable leitet (event.transformer ist ein RTCRtpScriptTransformer, das Worker-Pendant zu RTCRtpScriptTransform).

Wenn der Transformer in einen Audio-Stream eingefügt ist, 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, mit einer fiktiven Verschlüsselungsfunktion modifiziert und dann im Controller eingereiht werden kann (dies leitet es schließlich durch zu event.transformer.writable und dann zurück in die WebRTC-Pipeline).

js
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

Browser-Kompatibilität

Siehe auch