RTCRtpScriptTransformer:writable 属性
writable
是 RTCRtpScriptTransformer
接口的只读属性,它返回一个 WritableStream
实例,该实例可用作在对应的 RTCRtpScriptTransformer.readable
上入队的编码媒体帧的接收器。
当对应的 RTCRtpScriptTransform
插入到 WebRTC 发送方和接收方管道中时,编码媒体帧(RTCEncodedVideoFrame
或 RTCEncodedAudioFrame
)可能会在 RTCRtpScriptTransformer.readable
上入队。WebRTC 编码转换可以从 readable
读取帧,根据需要修改它们,然后通过将它们发送到此 writable
将它们发送回 WebRTC 管道。执行此操作的一种常用方法是通过 TransformStream
传输帧。
值
一个 WritableStream
。
示例
以下示例演示了如何将 RTCRtpScriptTransformer.readable
通过 TransformStream
传输到 RTCRtpScriptTransformer.writable
。
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);
});
代码实现了 rtctransform
事件的处理程序,该事件在构造对应的 RTCRtpScriptTransform
时以及在为处理而入队新帧时在全局工作线程对象上触发。event.transformer
是具有 writable
和 readable
属性的 RTCRtpScriptTransformer
。
创建了一个不同的 TransformStream
来处理传出和传入的帧,分别使用 createSenderTransform()
或 createReceiverTransform()
(未显示实现)。事件处理程序根据从 RTCRtpScriptTransform
构造函数 传递过来的选项选择要使用的正确转换流,并将其分配给 transform
。
代码在 readable
上调用 ReadableStream.pipeThrough()
以将编码帧通过选定的 TransformStream
传输,然后调用 ReadableStream.pipeTo()
将它们传输到 RTCRtpScriptTransformer.writable
。
规范
规范 |
---|
WebRTC 编码转换 # dom-rtcrtpscripttransformer-writable |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。