DedicatedWorkerGlobalScope: rtctransform 事件

可用性有限

此功能不是基线功能,因为它在一些最广泛使用的浏览器中不起作用。

注意:此功能仅在专用 Web 工作线程中可用。

当已编码的视频或音频帧已排队等待由WebRTC 编码转换进行处理时,rtctransform 事件会在工作线程的 DedicatedWorkerGlobalScope 对象上触发。

事件的 transformer 属性返回一个 RTCRtpScriptTransformer,该属性公开了已将帧排队的 ReadableStream,以及可以写入帧以将其重新注入 WebRTC 管道的 WritableStream

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

语法

在诸如 addEventListener() 之类的方法中使用事件名称,或设置事件处理程序属性。

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

onrtctransform = (event) => {};

事件类型

事件属性

此接口也继承了其父级 Event 的属性。

RTCTransformEvent.transformer 只读

返回与事件关联的 RTCRtpScriptTransformer

示例

以下代码片段显示了工作线程中 rtctransform 事件的处理程序,该处理程序使用 addEventListener() 添加到全局作用域。event.transformer 是一个 RTCRtpScriptTransformer,它是 RTCRtpScriptTransform 的工作线程端对应项。

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 上入队时,以及在构造转换器的相应 RTCRtpScriptTransformer 时仅触发一次 rtctransform 事件。代码首先使用选项中传递的 name 值确定要应用的转换(这允许添加到传入和传出 WebRTC 管道的 RTCRtpScriptTransform 实例共享一个工作线程)。然后,已编码的帧从可读流通过选定的转换 TransformStream 传递到可写流。实际的转换代码未显示。

请注意,此代码是 使用 WebRTC 编码转换 中提供的更完整示例的一部分。

规范

规范
WebRTC 编码转换
# dom-dedicatedworkerglobalscope-onrtctransform

浏览器兼容性

BCD 表仅在启用 JavaScript 的浏览器中加载。

另请参阅