@twilio/webrtc v4.6.0
twilio-webrtc.js
twilio-webrtc.js contains the various WebRTC shims used by twilio-video.js. It is not intended for general consumption.
Installation
npm install --save @twilio/webrtcExports
The following WebRTC API shims are available:
const {
getStats,
getUserMedia,
MediaStream,
MediaStreamTrack,
RTCIceCandidate,
RTCPeerConnection,
RTCSessionDescription
} = require('@twilio/webrtc');getStats
getStats resolves with normalized WebRTC statistics for the active ICE
candidate pair and each MediaStreamTrack, local or remote, of a particular
RTCPeerConnection.
/**
* Get the statistics for a given RTCPeerConnection.
* @param {RTCPeerConnection} peerConnection
* @returns {Promise<StandardizedStatsResponse>}
*/
function getStats(peerConnection) {}NOTE: StandardizedStatsResponse
normalizes the different formats of the stats returned by RTCPeerConnection#getStats in different
browsers. It does not conform to the W3C spec.
getUserMedia
getUserMedia accepts a MediaStreamConstraints object and resolves
with a MediaStream. By default, it requests both audio and video.
/**
* Request media from the user.
* @param {MediaStreamConstraints} [constraints={audio: true, video: true}]
* @returns {Promise<MediaStream>}
*/
function getUserMedia(constraints) {}RTCPeerConnection
RTCPeerConnection abstracts away some of the browser-specific implementations
of WebRTC, and implements some WebRTC features that are not present in some
browsers.
Chrome
- Adds rollback support, according to the workaround specified here.
- Adds "track" event support, as per the workaround in webrtc-adapter.
- Provides a workaround for the case where, when the SSRC of a
MediaStreamTrackchanges, the browser treats this as a removal of the existingMediaStreamTrackand the addition of a newMediaStreamTrack. - Adds support for getting and setting
maxPacketLifeTimeon RTCDataChannels by remapping the legacy propertymaxRetransmitTimetomaxPacketLifeTime. See this bug for more information. - Provides a workaround for this bug, where calling
removeTrackwith anRTCRtpSenderthat is not created by theRTCPeerConnectionin question throws an exception.
Firefox
- For new offers, adds support for calling
setLocalDescriptionandsetRemoteDescriptioninhave-local-offerandhave-remote-offersignaling states respectively. - Adds support for calling
createOfferin signaling statehave-local-offer. - The above features are implemented using rollback to work around this bug.
- Provides a workaround for this bug, where the browser may change the previously negotiated DTLS role in an answer, which breaks Chrome.
- Provides a workaround for this bug,
where the browser throws when
RTCPeerConnection.prototype.peerIdentityis accessed. - Works around Firefox Bug 1480277.
Safari
- Adds rollback support, according to the workaround specified here.
- Provides a workaround for the case where, when the SSRC of a
MediaStreamTrackchanges, the browser treats this as a removal of the existingMediaStreamTrackand the addition of a newMediaStreamTrack. - Provides a workaround for this bug, where webrtc-adapter's shimmed
addTrackmethod does not return theRTCRtpSenderassociated with the added track.
RTCSessionDescription
RTCSessionDescription abstracts away some of the browser-specific implementations
of WebRTC for Firefox and Safari, and works around this bug
in Chrome, where the native RTCSessionDescription constructor throws when its argument is
{ type: 'rollback'}.
Others
MediaStream, MediaStreamTrack, and RTCIceCandidate abstracts away their
browser-prefixed counterparts for earlier browser versions.
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago