RTCEncodedAudioFrame

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.

* Some parts of this feature may have varying levels of support.

Note: This feature is available in Dedicated Web Workers.

RTCEncodedAudioFrame của WebRTC API đại diện cho một khung âm thanh đã mã hóa trong đường ống thu hoặc gửi của WebRTC, có thể được sửa đổi bằng WebRTC Encoded Transform.

Giao diện cung cấp các phương thức và thuộc tính để lấy siêu dữ liệu về khung, cho phép xác định định dạng và thứ tự của nó trong chuỗi các khung. Thuộc tính data cho phép truy cập dữ liệu khung đã mã hóa dưới dạng buffer, có thể được mã hóa hoặc được sửa đổi bởi một transform.

Hàm khởi tạo

RTCEncodedAudioFrame()

Hàm khởi tạo sao chép. Tạo một đối tượng RTCEncodedAudioFrame mới và độc lập từ một khung, tùy chọn ghi đè một số siêu dữ liệu đã sao chép.

Thuộc tính phiên bản

RTCEncodedAudioFrame.timestamp Read only Deprecated Non-standard

Trả về dấu thời gian khi lấy mẫu khung bắt đầu.

RTCEncodedAudioFrame.data

Trả về một buffer chứa dữ liệu khung đã mã hóa.

Phương thức phiên bản

RTCEncodedAudioFrame.getMetadata()

Trả về siêu dữ liệu liên kết với khung.

Ví dụ

Chuyển đổi một khung âm thanh đã mã hóa

Đoạn mã này cho thấy một trình xử lý sự kiện rtctransform trong một Worker triển khai TransformStream và dẫn các khung đã mã hóa qua nó từ event.transformer.readable đến event.transformer.writable (event.transformer là một RTCRtpScriptTransformer, phía worker của RTCRtpScriptTransform).

Nếu transformer được chèn vào một luồng âm thanh, phương thức transform() được gọi với một RTCEncodedAudioFrame mỗi khi một khung mới được thêm vào event.transformer.readable. Phương thức transform() cho thấy cách đọc, sửa đổi bằng hàm mã hóa giả tưởng và đưa vào hàng đợi trên controller (điều này cuối cùng dẫn nó qua event.transformer.writable và trở lại đường ống WebRTC).

js
addEventListener("rtctransform", (event) => {
  const transform = new TransformStream({
    async transform(encodedFrame, controller) {
      // Tái tạo khung gốc.
      const view = new DataView(encodedFrame.data);

      // Xây dựng buffer mới
      const newData = new ArrayBuffer(encodedFrame.data.byteLength);
      const newView = new DataView(newData);

      // Mã hóa các byte khung bằng phương thức encryptFunction() (không hiển thị)
      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);
});

Lưu ý rằng các ví dụ đầy đủ hơn được cung cấp trong Using WebRTC Encoded Transforms.

Thông số kỹ thuật

Specification
WebRTC Encoded Transform
# rtcencodedaudioframe

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

Xem thêm