RTCRtpReceiver:transform 属性

基准线 2025
新推出

自 2025 年 10 月起,此功能已在最新的设备和浏览器版本中可用。此功能可能不适用于较旧的设备或浏览器。

RTCRtpReceiver 对象的 transform 属性用于将一个在 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 Encoded Transform
# dom-rtcrtpsender-transform

浏览器兼容性

另见