RTCEncodedVideoFrame: thuộc tính data

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since August 2023.

Note: This feature is available in Dedicated Web Workers.

Thuộc tính data của giao diện RTCEncodedVideoFrame trả về một bộ đệm chứa dữ liệu khung.

Giá trị

Một ArrayBuffer.

Ví dụ

Ví dụ này về WebRTC encoded transform cho thấy cách bạn có thể lấy dữ liệu khung trong hàm transform() của TransformStream và đảo ngược tất cả các bit.

Hàm transform() tạo một DataView trên bộ đệm trong thuộc tính data của khung, và cũng tạo một view trên một ArrayBuffer mới. Sau đó nó ghi các byte đã đảo ngược trong dữ liệu gốc vào bộ đệm mới, gán bộ đệm đó cho thuộc tính data của khung được mã hóa, và đưa khung đã sửa đổi vào hàng đợi trên stream.

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

Lưu ý rằng code xung quanh được hiển thị ở đây được mô tả trong Using WebRTC Encoded Transforms.

Thông số kỹ thuật

Specification
WebRTC Encoded Transform
# dom-rtcencodedvideoframe-data

Tương thích trình duyệt

Xem thêm