RTCEncodedAudioFrame: data 屬性

Baseline 2023
新推出

自 2023 年 8 月起,此功能已在最新的裝置和瀏覽器版本中可用。此功能可能不適用於舊裝置或瀏覽器。

注意:此功能在 專用 Web Workers 中可用。

data 屬性是 RTCEncodedAudioFrame 介面的一部分,它返回一個包含已編碼幀資料的緩衝區。

一個 ArrayBuffer

示例

此示例 WebRTC 已編碼轉換 展示瞭如何在 TransformStreamtransform() 函式中獲取幀資料並修改位元。

transform() 函式在幀 data 屬性的緩衝區上構造一個 DataView,並且還建立了一個新的 ArrayBuffer 檢視。然後,它將原始資料中的位元組進行取反並寫入新緩衝區,將該緩衝區分配給已編碼幀的 data 屬性,並將修改後的幀加入到流中。

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

      // Negate all bits in the incoming frame
      for (let i = 0; i < encodedFrame.data.byteLength; ++i) {
        newView.setInt8(i, ~view.getInt8(i));
      }

      encodedFrame.data = newData;
      controller.enqueue(encodedFrame);
    },
  });
  event.transformer.readable
    .pipeThrough(transform)
    .pipeTo(event.transformer.writable);
});

請注意,此處顯示的 surrounding code 在 使用 WebRTC 已編碼轉換 中有描述。

規範

規範
WebRTC Encoded Transform
# dom-rtcencodedaudioframe-data

瀏覽器相容性

另見