RTCPeerConnection: addTransceiver() 方法

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2020 年 1 月⁩ 起,所有主流浏览器均已支持。

RTCPeerConnection 接口的 addTransceiver() 方法会创建一个新的 RTCRtpTransceiver,并将其添加到与 RTCPeerConnection 关联的收发器集合中。每个收发器代表一个双向流,并关联一个 RTCRtpSender 和一个 RTCRtpReceiver

语法

js
addTransceiver(trackOrKind)
addTransceiver(trackOrKind, init)

参数

trackOrKind

要与收发器关联的 MediaStreamTrack,或者用作接收器 track(进而作为 RTCRtpReceiver 本身)的 kind 的字符串。

init 可选

一个用于在创建新收发器时指定任何选项的对象。可能的值为:

direction 可选

新收发器的首选方向。此值用于初始化新的 RTCRtpTransceiver 对象 RTCRtpTransceiver.direction 属性。

sendEncodings 可选

在从 RTCRtpSender 发送 RTP 媒体时允许的编码数组。这与传递给 RTCRtpSender.setParameters()parameter.encodings 数组相同。

streams 可选

要添加到收发器 RTCRtpReceiverMediaStream 对象列表;当远程对端的 RTCPeerConnection 发生 track 事件时,这些将是该事件指定的流。

返回值

将用于交换媒体数据的 RTCRtpTransceiver 对象。

异常

TypeError

如果 trackOrKind 既不是 "audio" 也不是 "video",则会抛出此异常。

如果使用了 sendEncodings 参数,并且存在格式错误的 rid 成员,或部分编码包含 rid 成员,或不同编码具有相同的 rid 值,则也可能抛出此异常。

RangeError

如果 sendEncodings 的任何编码具有小于 0.0 的 maxFramerate 值,或小于 1.0 的 scaleResolutionDownBy 值,则会抛出此异常。

InvalidStateError DOMException

如果关联的连接已关闭时调用该方法,则会抛出此异常。

InvalidAccessError DOMException

如果使用了 sendEncodings 参数,并且它包含除 rid 以外的只读参数,则会抛出此异常。

规范

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

浏览器兼容性

另见