RTCRtpSender: setStreams() 方法

Baseline 2023
新推出

自 ⁨2023 年 5 月⁩起,此功能可在最新的设备和浏览器版本上使用。此功能可能无法在旧版设备或浏览器上使用。

RTCRtpSendersetStreams() 方法将发送器的 track 与指定的 MediaStream 对象关联起来。

语法

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

参数

mediaStreamN 可选

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

返回值

无(undefined)。

异常

InvalidStateError DOMException

如果发送器的连接已关闭,则会抛出此异常。

描述

setStreams() 是纯粹的添加操作。它不会将 track 从任何流中移除;它只是将 track 添加到新的流中。如果您指定的流中已包含该 track,则该流不受影响。

一旦 track 已被添加到所有流中,negotiationneeded 事件就会被分派到发送器所属的 RTCPeerConnection,从而触发连接的重新协商。

示例

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

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

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

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

规范

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

浏览器兼容性