RTCRtpScriptTransformer:readable 属性

有限可用性

此功能不是基线功能,因为它在一些最广泛使用的浏览器中不起作用。

readableRTCRtpScriptTransformer 接口的只读属性,它返回一个 ReadableStream 实例,该实例是编码媒体帧的源。

当相应的 RTCRtpScriptTransform 插入到 WebRTC 发送方和接收方管道中时,此流可能会将传出或传入的编码媒体帧 (RTCEncodedVideoFrameRTCEncodedAudioFrame) 入队。WebRTC 编码转换可以读取帧,根据需要修改它们,然后通过将其写入 RTCRtpScriptTransformer.writable 将其发送回 WebRTC 管道。执行此操作的常用方法是通过 TransformStream 传输帧。

一个 ReadableStream

示例

以下示例显示了如何通过 TransformStreamreadable 传输到 RTCRtpScriptTransformer.writable

js
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 是具有 readablewritable 属性的 RTCRtpScriptTransformer

分别使用 createSenderTransform()createReceiverTransform() 创建一个不同的 TransformStream 来处理传出和传入帧(未显示实现)。事件处理程序根据从 RTCRtpScriptTransform 构造函数 传递过来的选项选择要使用的正确转换流,并将其分配给 transform

代码在 readable 上调用 ReadableStream.pipeThrough() 以将编码帧通过选定的 TransformStream 传输,然后调用 ReadableStream.pipeTo() 将其传输到 RTCRtpScriptTransformer.writable

规范

规范
WebRTC 编码转换
# dom-rtcrtpscripttransformer-readable

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅