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