DedicatedWorkerGlobalScope: rtctransform 事件

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

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

當一個編碼的影片或音訊幀已被排隊,供 WebRTC Encoded Transform 處理時,會在 worker 的 DedicatedWorkerGlobalScope 物件上觸發 rtctransform 事件。

該事件的 transformer 屬性會返回一個 RTCRtpScriptTransformer 物件,該物件公開了幀被排隊的 ReadableStream,以及一個可以寫入幀以將其注入 WebRTC 管道的 WritableStream

此事件不可取消,也不會冒泡。

語法

在諸如 addEventListener() 之類的方法中使用事件名稱,或設定事件處理程式屬性。

js
addEventListener("rtctransform", (event) => { })

onrtctransform = (event) => { }

事件型別

一個 RTCTransformEvent。繼承自 Event

Event RTCTransformEvent

事件屬性

此介面還繼承了其父級 Event 的屬性。

RTCTransformEvent.transformer 只讀

返回與事件關聯的 RTCRtpScriptTransformer

示例

以下程式碼片段展示了 worker 中 rtctransform 事件的處理程式,它使用 addEventListener() 新增到全域性作用域。event.transformer 是一個 RTCRtpScriptTransformer 物件,它是 RTCRtpScriptTransform 在 worker 端的對應物。

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

當編碼幀被加入 RTCRtpScriptTransformer 時,會觸發 rtctransform 事件,並且在 transformer 的相應 RTCRtpScriptTransformer 被構建時也會觸發一次。程式碼首先使用選項中傳遞的 name 值來確定要應用的轉換(這使得新增到傳入和傳出 WebRTC 管道的 RTCRtpScriptTransform 例項能夠共享一個 worker)。然後,編碼幀透過可讀流,經過選定的轉換 TransformStream,寫入可寫流。實際的轉換程式碼未顯示。

請注意,此程式碼是 使用 WebRTC 編碼轉換 中提供的更完整示例的一部分。

規範

規範
WebRTC Encoded Transform
# dom-dedicatedworkerglobalscope-onrtctransform

瀏覽器相容性

另見