RTCRtpSender: transform 属性
RTCRtpSender 对象的 transform 属性用于将一个运行在 worker 线程中的 transform stream ( TransformStream ) 插入到发送管道中。这允许在编码器输出编码后的视频和音频帧之后、发送之前,对它们应用流转换。
要添加的转换使用 RTCRtpScriptTransform 及其关联的 Worker 来定义。如果 transform 是在创建 RTCRtpSender 后立即同步设置的,它将接收到发送者编码器生成的第一个完整帧。
值
一个 RTCRtpScriptTransform,或者在发送者没有关联的转换流时为 null。
示例
此示例展示了如何通过 WebRTC 将用户摄像头的视频流传输出去,并添加一个 WebRTC 编码转换来修改出站流。请注意,这是 guides 主题 使用 WebRTC 编码转换 中更大型示例的一部分。
代码假定存在一个名为 peerConnection 的 RTCPeerConnection 对象,并且该对象已连接到远程对等端。它首先使用 getUserMedia() 从媒体设备获取视频 MediaStream,然后使用 MediaStream.getTracks() 方法获取流中的第一个 MediaStreamTrack。
使用 addTrack() 将该轨道添加到对等连接。这将返回一个新的 RTCRtpSender 对象,用于发送该轨道。
const mediaStream = await navigator.mediaDevices.getUserMedia({ video: true });
const [track] = mediaStream.getTracks();
const videoSender = peerConnection.addTrack(track, mediaStream);
上面的代码设置了连接并开始发送轨道。为了将转换流添加到管道中,我们需要构建一个 RTCRtpScriptTransform 并将其分配给发送者的 transform 属性。由于转换是在创建 RTCRtpSender 后立即构造的,因此它将在发送者编码器生成的第一个帧被发送之前接收到该帧。
const worker = new Worker("worker.js");
videoSender.transform = new RTCRtpScriptTransform(worker, {
name: "senderTransform",
});
请注意,您可以随时添加转换。但是,在调用 addTrack() 后立即添加转换,转换将获得发送的第一个编码帧。
规范
| 规范 |
|---|
| WebRTC Encoded Transform # dom-rtcrtpsender-transform |
浏览器兼容性
加载中…