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

瀏覽器相容性