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