This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.
The addTransceiver() method of the RTCPeerConnection interface creates a new RTCRtpTransceiver and adds it to the set of transceivers associated with the RTCPeerConnection. Each transceiver represents a bidirectional stream, with both an RTCRtpSender and an RTCRtpReceiver associated with it.
addTransceiver(trackOrKind) addTransceiver(trackOrKind, init)
trackOrKindA MediaStreamTrack to associate with the transceiver, or a string which is used as the kind of the receiver's track, and by extension of the RTCRtpReceiver itself.
init OptionalAn object for specifying any options when creating the new transceiver. Possible values are:
direction OptionalThe new transceiver's preferred directionality. This value is used to initialize the new RTCRtpTransceiver object's RTCRtpTransceiver.direction property.
sendEncodings OptionalAn array of encodings to allow when sending RTP media from the RTCRtpSender. This is the same as the parameter.encodings array passed to RTCRtpSender.setParameters().
streams OptionalA list of MediaStream objects to add to the transceiver's RTCRtpReceiver; when the remote peer's RTCPeerConnection's track event occurs, these are the streams that will be specified by that event.
The RTCRtpTransceiver object which will be used to exchange the media data.
TypeErrorThrown if trackOrKind was not either "audio" or "video".
If the sendEncodings argument is used, this error may also be thrown if there is a badly formatted rid member, some but not all encodings contain a rid member, or different encodings have the same rid value.
RangeErrorThrown if any of the sendEncodings encodings have a maxFramerate value less than 0.0, or a scaleResolutionDownBy value of less than 1.0.
InvalidStateError DOMException
Thrown if the method is called when the associated connection is closed.
InvalidAccessError DOMException
Thrown if the sendEncodings argument is used, and contains a read-only parameter other than rid.
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | WebView on iOS | |
addTransceiver |
69 | 79 | 59 | 56 | 11 | 69 | 59 | 48 | 11 | 10.0 | 69 | 11 |
init_direction_parameter |
69 | 79 | 59 | 56 | 11 | 69 | 59 | 48 | 11 | 10.0 | 69 | 11 |
init_sendEncodings_parameter |
69 | 79 | 110 | 56 | 14.1 | 69 | 110 | 48 | 14.5 | 10.0 | 69 | 14.5 |
init_streams_parameter |
69 | 79 | 59 | 56 | 12.1 | 69 | 59 | 48 | 12.2 | 10.0 | 69 | 12.2 |
RTCPeerConnection.addTrack() also creates transceiversRTCRtpReceiver and RTCRtpSender
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/addTransceiver