RTCTransformEvent

基准线 2025
新推出

自 2025 年 10 月起,此功能已在最新的设备和浏览器版本中可用。此功能可能不适用于较旧的设备或浏览器。

RTCTransformEventWebRTC API 的一部分,它表示当一个编码帧已被排队等待由 WebRTC Encoded Transform 进行处理时所触发的事件。

该接口有一个 transformer 属性,该属性暴露了一个可读流和一个可写流。工作线程应从 transformer.readable 读取编码帧,根据需要进行修改,然后将它们按相同顺序且无重复地写入 transformer.writable

在撰写本文时,只有一种基于 RTCTransformEvent 的事件:rtctransform

Event RTCTransformEvent

实例属性

由于 RTCTransformEvent 是基于 Event 的,因此它的属性也可用。

RTCTransformEvent.transformer 只读

返回与事件关联的 RTCRtpScriptTransformer

转换事件类型

只有一种转换事件类型。

rtctransform

当构造关联的 RTCRtpScriptTransform 对象时,以及每当有新的编码视频或音频帧被加入队列等待处理时,都会在工作线程全局作用域上触发 rtctransform 事件。

您可以使用 DedicatedWorkerGlobalScope.addEventListener()onrtctransform 事件处理程序属性来添加 rtctransform 事件监听器,以便在新帧可用时获得通知。

示例

此示例创建了 rtctransform 事件的事件监听器。

该示例假设我们有一个 TransformStream,其中 options 对象是从主线程中的 RTCRtpScriptTransform 构造函数传递过来的。最后的代码展示了流如何从 readable 通过转换流管道传输到 writable

js
addEventListener("rtctransform", (event) => {
  let transform;
  // Select a transform based on passed options
  if (event.transformer.options.name === "senderTransform") {
    transform = createSenderTransform(); // A TransformStream (not shown)
  } else if (event.transformer.options.name === "receiverTransform") {
    transform = createReceiverTransform(); // A TransformStream (not shown)
  }
  // Pipe frames from the readable to writeable through TransformStream
  event.transformer.readable
    .pipeThrough(transform)
    .pipeTo(event.transformer.writable);
});

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

规范

规范
WebRTC Encoded Transform
# rtctransformevent

浏览器兼容性