RTCRtpSender: transform 属性
transform
属性是 RTCRtpSender
对象的一个属性,用于将运行在工作线程中的转换流 (TransformStream
) 插入发送器管道。这使得可以在编码器输出编码后的视频和音频帧后、发送前对流进行转换。
要添加的转换使用 RTCRtpScriptTransform
及其关联的 Worker
定义。如果转换是在创建 RTCRtpSender
后立即同步设置的,则它将接收发送器编码器生成的第一个完整帧。
值
一个 RTCRtpScriptTransform
,或者如果发送器没有关联的转换流,则为 null
。
示例
此示例展示了如何通过 WebRTC 流式传输用户的网络摄像头视频,并添加一个 WebRTC 编码转换来修改传出的流。请注意,这是指南主题 使用 WebRTC 编码转换 中一个更大示例的一部分。
代码假设存在一个名为 peerConnection
的 RTCPeerConnection
,它已经连接到远程对等体。它首先获取一个 MediaStreamTrack
,使用 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 编码转换 # dom-rtcrtpsender-transform |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。