RTCRtpSender: setStreams() 方法

RTCRtpSender 方法 setStreams() 将发送者的 track 与指定的 MediaStream 对象关联。

语法

js
setStreams()
setStreams(mediaStream1)
setStreams(mediaStream1, mediaStream2)
setStreams(mediaStream1, mediaStream2, /* …, */ mediaStreamN)

参数

mediaStreamN 可选

作为参数指定的任意数量的 MediaStream 对象,它们标识 RTCRtpSendertrack 所属的流。如果未指定此参数,则不会将任何新流与轨道关联。

返回值

无 (undefined).

异常

InvalidStateError DOMException

如果发送者的连接已关闭,则抛出。

描述

setStreams() 纯粹是累加的。它不会从任何流中删除轨道;它只是将其添加到新的流中。如果您指定轨道已属于的流,则该流将不受影响。

一旦轨道被添加到所有流中,连接的重新协商将由发送者所属的 RTCPeerConnection 分派的 negotiationneeded 事件触发。

示例

此示例将 RTCPeerConnection 的所有轨道添加到指定的流中。

js
function addTracksToStream(stream) {
  let senders = pc.getSenders();

  senders.forEach((sender) => {
    if (sender.track && sender.transport.state === connected) {
      sender.setStreams(stream);
    }
  });
}

在调用 RTCPeerConnection 方法 getSenders() 以获取连接发送者列表后,addTracksToStream() 函数将遍历该列表。对于每个发送者,如果发送者的轨道非空且其传输状态为 connected,我们调用 setStreams() 将轨道添加到指定的 stream 中。

规范

规范
WebRTC:浏览器中的实时通信
# dom-rtcrtpsender-setstreams

浏览器兼容性

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