RTCRtpSender: transform 属性

有限可用性

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

transform 属性是 RTCRtpSender 对象的一个属性,用于将运行在工作线程中的转换流 (TransformStream) 插入发送器管道。这使得可以在编码器输出编码后的视频和音频帧后、发送前对流进行转换。

要添加的转换使用 RTCRtpScriptTransform 及其关联的 Worker 定义。如果转换是在创建 RTCRtpSender 后立即同步设置的,则它将接收发送器编码器生成的第一个完整帧。

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

示例

此示例展示了如何通过 WebRTC 流式传输用户的网络摄像头视频,并添加一个 WebRTC 编码转换来修改传出的流。请注意,这是指南主题 使用 WebRTC 编码转换 中一个更大示例的一部分。

代码假设存在一个名为 peerConnectionRTCPeerConnection,它已经连接到远程对等体。它首先获取一个 MediaStreamTrack,使用 getUserMedia() 从媒体设备获取视频 MediaStream,然后使用 MediaStream.getTracks() 方法获取流中的第一个 MediaStreamTrack

使用 addTrack() 将轨道添加到对等连接。这将返回一个新的 RTCRtpSender,它将用于发送轨道。

js
const mediaStream = await navigator.mediaDevices.getUserMedia({ video: true });
const [track] = mediaStream.getTracks();
const videoSender = peerConnection.addTrack(track, mediaStream);

上面的代码设置了连接并开始发送轨道。要将转换流添加到管道中,我们需要构造一个 RTCRtpScriptTransform 并将其分配给发送器的 transform 属性。由于转换是在 RTCRtpSender 创建后立即构造的,因此它将接收发送器编码器生成的第一个帧,然后发送。

js
const worker = new Worker("worker.js");
videoSender.transform = new RTCRtpScriptTransform(worker, {
  name: "senderTransform",
});

请注意,你可以在任何时间添加转换。但是,通过在调用 addTrack() 后立即添加它,转换将获得发送的第一个编码帧。

规范

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

浏览器兼容性

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

另请参阅