RTCRtpReceiver:transform 属性

有限可用性

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

transform 属性是 RTCRtpReceiver 对象的一个属性,用于将运行在 worker 线程中的转换流 (TransformStream) 插入接收器管道。这允许在编码的视频和音频帧从打包器到达时(在播放/渲染之前)对其应用流转换。

要添加的转换使用 RTCRtpScriptTransform 及其关联的 Worker 定义。如果在对等连接的 track 事件 处理程序中设置了转换,则转换流将接收轨道上的第一个完整的传入帧。

一个 RTCRtpScriptTransform,或者如果接收器没有关联的转换流,则为 null

示例

请注意,这是指南主题 使用 WebRTC 编码转换 中较大型示例的一部分。

为传入帧添加转换

此示例演示如何添加 WebRTC 编码转换以修改传入流。代码假设存在一个名为 peerConnectionRTCPeerConnection,它已连接到远程对等方。

要将转换流插入传入帧的管道中,我们需要构造一个 RTCRtpScriptTransform 并将其分配给接收器的 transform 属性。我们可以在 track 事件 处理程序中执行此操作,如所示。每当远程端发送轨道时,此事件就会在对等连接上触发。event.receiver 属性是一个 RTCRtpReceiver

js
const worker = new Worker("worker.js");
peerConnection.ontrack = (event) => {
  event.receiver.transform = new RTCRtpScriptTransform(worker, {
    someOption: "receiverTransform",
  });
};

因为转换是在创建 RTCRtpReceiver 后立即构造的,所以它将接收第一个传入帧。作为 RTCRtpScriptTransform 构造函数中第二个参数传递的对象将发送到 worker 线程,并且 worker 代码可以使用它为传入帧提供与用于传出帧不同的转换。

规范

规范
WebRTC 编码转换
# dom-rtcrtpsender-transform

浏览器兼容性

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

另请参阅