DedicatedWorkerGlobalScope: rtctransform 事件
注意:此功能仅在专用 Web 工作线程中可用。
当已编码的视频或音频帧已排队等待由WebRTC 编码转换进行处理时,rtctransform
事件会在工作线程的 DedicatedWorkerGlobalScope
对象上触发。
事件的 transformer
属性返回一个 RTCRtpScriptTransformer
,该属性公开了已将帧排队的 ReadableStream
,以及可以写入帧以将其重新注入 WebRTC 管道的 WritableStream
。
此事件不可取消,也不冒泡。
语法
在诸如 addEventListener()
之类的方法中使用事件名称,或设置事件处理程序属性。
addEventListener("rtctransform", (event) => {});
onrtctransform = (event) => {};
事件类型
一个RTCTransformEvent
。继承自 Event
。
事件属性
此接口也继承了其父级 Event
的属性。
RTCTransformEvent.transformer
只读-
返回与事件关联的
RTCRtpScriptTransformer
。
示例
以下代码片段显示了工作线程中 rtctransform
事件的处理程序,该处理程序使用 addEventListener()
添加到全局作用域。event.transformer
是一个 RTCRtpScriptTransformer
,它是 RTCRtpScriptTransform
的工作线程端对应项。
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 的浏览器中加载。