PeerConnection

Extends: EventEmitter

Source: PeerConnection.js:38

Manages WebRTC connection and SDP information between peers.

Example

CODE
const peerConnection = new PeerConnection()

Constructor

new PeerConnection(): PeerConnection

Instance Methods

createRTCPeer(config: RTCConfiguration, mode?: String)

Instance new RTCPeerConnection.

Parameters

  • config (RTCConfiguration) — Peer configuration.
    • config.autoInitStats (Boolean, optional, default: true) — True to initialize statistics monitoring of the RTCPeerConnection accessed via Logger.get(), false to opt-out.
    • config.statsIntervalMs (Number, optional, default: 1000) — The default interval at which the SDK will return WebRTC stats to the consuming application.
  • mode (String, optional, default: "\"Viewer\"") — Type of connection that is trying to be created, either 'Viewer' or 'Publisher'.

getRTCPeer(): RTCPeerConnection

Get current RTC peer connection.

Returns

  • RTCPeerConnection — Object which represents the RTCPeerConnection.

closeRTCPeer()

Close RTC peer connection.

Fires

  • PeerConnection#event:connectionStateChange

setRTCRemoteSDP(sdp: String): Promise.<void>

Set SDP information to remote peer.

Parameters

  • sdp (String) — New SDP to be set in the remote peer.

Returns

  • Promise.<void> — Promise object which resolves when SDP information was successfully set.

getRTCLocalSDP(options: Object): Promise.<String>

Get the SDP modified depending the options. Optionally set the SDP information to local peer.

Parameters

  • options (Object)
    • options.stereo (Boolean) — True to modify SDP for support stereo. Otherwise False.
    • options.dtx (Boolean) — True to modify SDP for supporting dtx in opus. Otherwise False.*
    • options.mediaStream (MediaStream | Array.<MediaStreamTrack>) — MediaStream to offer in a stream. This object must have 1 audio track and 1 video track, or at least one of them. Alternative you can provide both tracks in an array.
    • options.codec (VideoCodec) — Selected codec for support simulcast.
    • options.simulcast (Boolean) — True to modify SDP for support simulcast. Only available in Chromium based browsers and with H.264 or VP8 video codecs.
    • options.scalabilityMode (String) — Selected scalability mode. You can get the available capabilities using PeerConnection.getCapabilities method. Only available in Google Chrome.
    • options.absCaptureTime (Boolean) — True to modify SDP for supporting absolute capture time header extension. Otherwise False.
    • options.dependencyDescriptor (Boolean) — True to modify SDP for supporting aom dependency descriptor header extension. Otherwise False.
    • options.disableAudio (Boolean) — True to not support audio.
    • options.disableVideo (Boolean) — True to not support video.
    • options.setSDPToPeer (Boolean) — True to set the SDP to local peer.

Returns

  • Promise.<String> — Promise object which represents the SDP information of the created offer.

addRemoteTrack( media: String, streams: Array.<MediaStream>, ): Promise.<RTCRtpTransceiver>

Add remote receiving track.

Parameters

  • media (String) — Media kind ('audio' | 'video').
  • streams (Array.<MediaStream>) — Streams the track will belong to.

Returns

  • Promise.<RTCRtpTransceiver> — Promise that will be resolved when the RTCRtpTransceiver is assigned an mid value.

updateBandwidthRestriction(sdp: String, bitrate: Number): String

Update remote SDP information to restrict bandwidth.

Parameters

  • sdp (String) — Remote SDP.
  • bitrate (Number) — New bitrate value in kbps or 0 unlimited bitrate.

Returns

  • String — Updated SDP information with new bandwidth restriction.

updateBitrate(bitrate: Number): Promise.<void>

Set SDP information to remote peer with bandwidth restriction.

Parameters

  • bitrate (Number, default: 0) — New bitrate value in kbps or 0 unlimited bitrate.

Returns

  • Promise.<void> — Promise object which resolves when bitrate was successfully updated.

getRTCPeerStatus(): RTCPeerConnectionState

Get peer connection state.

Returns

  • RTCPeerConnectionState — Promise object which represents the peer connection state.

replaceTrack(mediaStreamTrack: MediaStreamTrack)

Replace current audio or video track that is being broadcasted.

Parameters

  • mediaStreamTrack (MediaStreamTrack) — New audio or video track to replace the current one.

getTracks(): Array.<MediaStreamTrack>

Get sender tracks

Returns

  • Array.<MediaStreamTrack> — An array with all tracks in sender peer.

initStats()

Initialize the statistics monitoring of the RTCPeerConnection.

It will be emitted every second.

Fires

  • PeerConnection#event:stats

Example

CODE
peerConnection.initStats()
CODE
import Publish from '@millicast/sdk'

//Initialize and connect your Publisher
const millicastPublish = new Publish(undefined, tokenGenerator)
await millicastPublish.connect(options)

//Initialize get stats
millicastPublish.webRTCPeer.initStats()

//Capture new stats from event every second
millicastPublish.webRTCPeer.on('stats', (stats) => {
  console.log('Stats from event: ', stats)
})
CODE
import View from '@millicast/sdk'

//Initialize and connect your Viewer
const millicastView = new View(undefined, tokenGenerator)
await millicastView.connect()

//Initialize get stats
millicastView.webRTCPeer.initStats()

//Capture new stats from event every second
millicastView.webRTCPeer.on('stats', (stats) => {
  console.log('Stats from event: ', stats)
})

stopStats()

Stops the monitoring of RTCPeerConnection statistics.

Example

CODE
peerConnection.stopStats()

Static Methods

getCapabilities(kind: 'audio' | 'video'): MillicastCapability

Gets user's browser media capabilities compared with Millicast Media Server support.

Parameters

  • kind ("audio" | "video") — Type of media for which you wish to get sender capabilities.

Returns

  • MillicastCapability — Object with all capabilities supported by user's browser and Millicast Media Server.

Events

track: RTCTrackEvent

New track event.

connectionStateChange: RTCPeerConnectionState

Peer connection state change. Could be new, connecting, connected, disconnected, failed or closed.