RTCRtpScriptTransformer: readable 屬性

基準線 2025
新推出

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

readableRTCRtpScriptTransformer 介面的只讀屬性,它返回一個 ReadableStream 例項,該例項是編碼媒體幀的源。

當相應的 RTCRtpScriptTransform 被插入到 WebRTC 傳送者和接收者管道中時,此流可能會被編碼的傳出或傳入媒體幀(RTCEncodedVideoFrameRTCEncodedAudioFrame)入隊。WebRTC 編碼轉換可以讀取幀,根據需要修改它們,然後透過寫入 RTCRtpScriptTransformer.writable 將它們傳送回 WebRTC 管道。執行此操作的常用方法是透過 TransformStream 管道傳輸幀。

一個 ReadableStream

示例

以下示例顯示瞭如何將 readable 透過 TransformStream 管道傳輸到 RTCRtpScriptTransformer.writable

js
addEventListener("rtctransform", (event) => {
  let transform;
  // Select a transform based on passed options
  if (event.transformer.options.name === "senderTransform")
    transform = createSenderTransform(); // A TransformStream
  else if (event.transformer.options.name === "receiverTransform")
    transform = createReceiverTransform(); // A TransformStream
  else return;

  // Pipe frames from the readable to writeable through TransformStream
  event.transformer.readable
    .pipeThrough(transform)
    .pipeTo(event.transformer.writable);
});

該程式碼實現了 rtctransform 事件的處理程式。該事件在相應的 RTCRtpScriptTransform 構建時以及有新幀入隊進行處理時,會在全域性 worker 物件上觸發。event.transformer 是具有 readablewritable 屬性的 RTCRtpScriptTransformer

使用 createSenderTransform()createReceiverTransform()(未顯示實現)分別建立了一個不同的 TransformStream 來處理傳出和傳入的幀。事件處理程式根據從 RTCRtpScriptTransform 建構函式 傳遞的選項選擇要使用的正確轉換流,並將其分配給 transform

該程式碼呼叫 readable 上的 ReadableStream.pipeThrough() 將編碼幀透過選定的 TransformStream 管道傳輸,然後呼叫 ReadableStream.pipeTo() 將它們管道傳輸到 RTCRtpScriptTransformer.writable

規範

規範
WebRTC Encoded Transform
# dom-rtcrtpscripttransformer-readable

瀏覽器相容性

另見