Global

Members


<constant> AudioCodec :string

Names of the supported audio codecs.

Type:
  • string
Properties:
Name Type Default Description
isac string isac
opus string opus
PCMA string PCMA
PCMU string PCMU

<constant> LogLevel :string

Levels for logging verbosity.

Type:
  • string
Properties:
Name Type Default Description
debug string debug
info string info
warn string warn
error string error
off string off

<constant> NetworkQualityVerbosity :number

The verbosity level of network quality information of a Participant.

Type:
  • number
Properties:
Name Type Default Description
none number 0

Nothing is reported for the Participant. This has no effect and defaults to NetworkQualityVerbosity#minimal for the LocalParticipant.

minimal number 1

Reports NetworkQualityLevel for the Participant.

moderate number 2

Reports NetworkQualityLevel and NetworkQualityStats for the Participant. NetworkQualityStats is populated with audio and video NetworkQualityLevels based on which the Participant's NetworkQualityLevel is calculated.

detailed number 3

Reports NetworkQualityLevel and NetworkQualityStats for the Participant. NetworkQualityStats is populated with audio and video NetworkQualityLevels and their corresponding NetworkQualityMediaStats based on which the Participant's NetworkQualityLevel is calculated.


<constant> VideoCodec :string

Names of the supported video codecs.

Type:
  • string
Properties:
Name Type Default Description
H264 string H264
VP8 string VP8
VP9 string VP9

Methods


connect(token [, options])

Connect to a Room.

By default, this will automatically acquire an array containing a LocalAudioTrack and LocalVideoTrack before connecting to the Room. These will be stopped when you disconnect from the Room.

You can override the default behavior by specifying options. For example, rather than acquiring a LocalAudioTrack and LocalVideoTrack automatically, you can pass your own array which you can stop yourself. See ConnectOptions for more information.

Parameters:
Name Type Argument Description
token string

The Access Token string

options ConnectOptions <optional>

Options to override the default behavior

Throws:
Returns:
Type
CancelablePromise.<Room>
Examples
var Video = require('twilio-video');
var token = getAccessToken();
Video.connect(token, {
  name: 'my-cool-room'
}).then(function(room) {
  room.on('participantConnected', function(participant) {
    console.log(participant.identity + ' has connected');
  });
  room.once('disconnected', function() {
    console.log('You left the Room:', room.name);
  });
});
var Video = require('twilio-video');
var token = getAccessToken();

// Connect with audio-only
Video.connect(token, {
  name: 'my-cool-room',
  audio: true
}).then(function(room) {
  room.on('participantConnected', function(participant) {
    console.log(participant.identity + ' has connected');
  });

  room.once('disconnected', function() {
    console.log('You left the Room:', room.name);
  });
});
var Video = require('twilio-video');
var token = getAccessToken();

// Connect with media acquired using getUserMedia()
navigator.mediaDevices.getUserMedia({
  audio: true,
  video: true
}).then(function(mediaStream) {
  return Video.connect(token, {
    name: 'my-cool-room',
    tracks: mediaStream.getTracks()
  });
}).then(function(room) {
  room.on('participantConnected', function(participant) {
    console.log(participant.identity + ' has connected');
  });

  room.once('disconnected', function() {
    console.log('You left the Room:', room.name);
  });
});
var Video = require('twilio-video');
var token = getAccessToken();

// Connect with custom names for LocalAudioTrack and LocalVideoTrack
Video.connect(token, {
  name: 'my-cool-room'
  audio: { name: 'microphone' },
  video: { name: 'camera' }
}).then(function(room) {
  room.localParticipants.trackPublications.forEach(function(publication) {
    console.log('The LocalTrack "' + publication.trackName + '" was successfully published');
  });
});

createLocalAudioTrack( [options])

Request a LocalAudioTrack.

Parameters:
Name Type Argument Description
options CreateLocalTrackOptions <optional>

Options for requesting a LocalAudioTrack

Returns:
Type
Promise.<LocalAudioTrack>
Examples
var Video = require('twilio-video');

// Connect to the Room with just video
Video.connect('my-token', {
  name: 'my-cool-room',
  video: true
}).then(function(room) {
  // Add audio after connecting to the Room
  Video.createLocalAudioTrack().then(function(localTrack) {
    room.localParticipant.publishTrack(localTrack);
  });
});
var Video = require('twilio-video');

// Request the default LocalAudioTrack with a custom name
Video.createLocalAudioTrack({ name: 'microphone' }).then(function(localTrack) {
  console.log(localTrack.name); // 'microphone'
});

createLocalTracks( [options])

Request LocalTracks. By default, it requests a LocalAudioTrack and a LocalVideoTrack.

Parameters:
Name Type Argument Description
options CreateLocalTracksOptions <optional>
Returns:
Type
Promise.<Array.<LocalTrack>>
Examples
var Video = require('twilio-video');
// Request audio and video tracks
Video.createLocalTracks().then(function(localTracks) {
  var localMediaContainer = document.getElementById('local-media-container-id');
  localTracks.forEach(function(track) {
    localMediaContainer.appendChild(track.attach());
  });
});
var Video = require('twilio-video');
// Request just the default audio track
Video.createLocalTracks({ audio: true }).then(function(localTracks) {
  return Video.connect('my-token', {
    name: 'my-cool-room',
    tracks: localTracks
  });
});
var Video = require('twilio-video');
// Request the audio and video tracks with custom names
Video.createLocalTracks({
  audio: { name: 'microphone' },
  video: { name: 'camera' }
}).then(function(localTracks) {
  localTracks.forEach(function(localTrack) {
    console.log(localTrack.name);
  });
});

createLocalVideoTrack( [options])

Request a LocalVideoTrack.

Parameters:
Name Type Argument Description
options CreateLocalTrackOptions <optional>

Options for requesting a LocalVideoTrack

Returns:
Type
Promise.<LocalVideoTrack>
Examples
var Video = require('twilio-video');

// Connect to the Room with just audio
Video.connect('my-token', {
  name: 'my-cool-room',
  audio: true
}).then(function(room) {
  // Add video after connecting to the Room
  Video.createLocalVideoTrack().then(function(localTrack) {
    room.localParticipant.publishTrack(localTrack);
  });
});
var Video = require('twilio-video');

// Request the default LocalVideoTrack with a custom name
Video.createLocalVideoTrack({ name: 'camera' }).then(function(localTrack) {
  console.log(localTrack.name); // 'camera'
});

Type Definitions


AudioLevel

The maximum absolute amplitude of a set of audio samples in the range of 0 to 32767 inclusive.

Type:
  • number

AudioTrackPublication

Type:

ConnectOptions

You may pass these options to connect in order to override the default behavior.

Type:
  • object
Properties:
Name Type Argument Default Description
abortOnIceServersTimeout boolean <optional>
false

If fetching ICE servers times out (for example, due to a restrictive network or slow HTTP proxy), then, by default, twilio-video.js will fallback to using hard-coded STUN servers and continue connecting to the Room. Setting this property to true will cause twilio-video.js to abort instead, and connect will reject with a ConfigurationAcquireFailedError.

audio boolean | CreateLocalTrackOptions <optional>
true

Whether or not to get local audio with getUserMedia when tracks are not provided.

dominantSpeaker boolean <optional>
false

Whether to enable the Dominant Speaker API or not. This only takes effect in Group Rooms.

dscpTagging boolean <optional>
false

DSCP tagging allows you to request enhanced QoS treatment for RTP media packets from any firewall that the client may be behind. Setting this option to true will request DSCP tagging for media packets on supported browsers (only Chrome supports this as of now). Audio packets will be sent with DSCP header value set to 0xb8 which corresponds to Expedited Forwarding (EF). Video packets will be sent with DSCP header value set to 0x88 which corresponds to Assured Forwarding (AF41).

iceServers Array.<RTCIceServer>

Override the STUN and TURN servers used when connecting to Rooms

iceServersTimeout number <optional>
3000

Override the amount of time, in milliseconds, that the SDK will wait when acquiring STUN and TURN servers

iceTransportPolicy RTCIceTransportPolicy <optional>
"all"

Override the ICE transport policy to be one of "relay" or "all"

insights boolean <optional>
true

Whether publishing events to the Insights gateway is enabled or not

maxAudioBitrate number <optional>
<nullable>
null

Max outgoing audio bitrate (bps); A null or a 0 value does not set any bitrate limit; This value is set as a hint for variable bitrate codecs, but will not take effect for fixed bitrate codecs; Based on our tests, Chrome, Firefox and Safari support a bitrate range of 12000 bps to 256000 bps for Opus codec; This parameter has no effect on iSAC, PCMU and PCMA codecs

maxVideoBitrate number <optional>
<nullable>
null

Max outgoing video bitrate (bps); A null or 0 value does not set any bitrate limit; This value is set as a hint for variable bitrate codecs, but will not take effect for fixed bitrate codecs; Based on our tests, Chrome, Firefox and Safari all seem to support an average bitrate range of 20000 bps (20 kbps) to 8000000 bps (8 mbps) for a 720p VideoTrack

name string <optional>
<nullable>
null

Set to connect to a Room by name

networkQuality boolean | NetworkQualityConfiguration <optional>
false

Whether to enable the Network Quality API or not. This only takes effect in Group Rooms. Pass a NetworkQualityConfiguration to configure verbosity levels for network quality information for LocalParticipant and RemoteParticipants. A true value will set the NetworkQualityVerbosity for the LocalParticipant to NetworkQualityVerbosity#minimal and the NetworkQualityVerbosity for RemoteParticipants to NetworkQualityVerbosity#none.

preferredAudioCodecs Array.<AudioCodec> <optional>
[]

Preferred audio codecs; An empty array preserves the current audio codec preference order.

preferredVideoCodecs Array.<(VideoCodec|VideoCodecSettings)> <optional>
[]

Preferred video codecs; An empty array preserves the current video codec preference order. If you want to set a preferred video codec on a Group Room, you will need to create the Room using the REST API and set the VideoCodecs property. See here for more information.

logLevel LogLevel | LogLevels <optional>
'warn'

Set the log verbosity of logging to console. Passing a LogLevel string will use the same level for all components. Pass a LogLevels to set specific log levels.

tracks Array.<(LocalTrack|MediaStreamTrack)> <optional>

The LocalTracks or MediaStreamTracks with which to join the Room. These tracks can be obtained either by calling createLocalTracks, or by constructing them from the MediaStream obtained by calling getUserMedia().

video boolean | CreateLocalTrackOptions <optional>
true

Whether or not to get local video with getUserMedia when tracks are not provided.


CreateLocalTrackOptions

Create LocalTrack options.

Type:
  • MediaTrackConstraints
Properties:
Name Type Argument Default Description
logLevel LogLevel | LogLevels
name string <optional>

The LocalTrack's name; by default, it is set to the LocalTrack's ID.

workaroundWebKitBug180748 boolean <optional>
false

Only valid for LocalAudioTracks; setting this attempts to workaround WebKit Bug 180748, where, in Safari, getUserMedia may return a silent audio MediaStreamTrack.


CreateLocalTracksOptions

Type:
  • object
Properties:
Name Type Argument Default Description
audio boolean | CreateLocalTrackOptions <optional>
true

Whether or not to get local audio with getUserMedia when tracks are not provided.

logLevel LogLevel | LogLevels <optional>
'warn'

Set the log verbosity of logging to console. Passing a LogLevel string will use the same level for all components. Pass a LogLevels to set specific log levels.

video boolean | CreateLocalTrackOptions <optional>
true

Whether or not to get local video with getUserMedia when tracks are not provided.


DataTrack

Type:

DataTrackPublication

Type:

EncodingParameters

Outgoing media encoding parameters.

Type:
  • object
Properties:
Name Type Argument Description
maxAudioBitrate number <optional>
<nullable>

Max outgoing audio bitrate (bps); If not specified, retains the existing bitrate limit; A null or a 0 value removes any previously set bitrate limit; This value is set as a hint for variable bitrate codecs, but will not take effect for fixed bitrate codecs; Based on our tests, Chrome, Firefox and Safari support a bitrate range of 12000 bps to 256000 bps for Opus codec; This parameter has no effect on iSAC, PCMU and PCMA codecs

maxVideoBitrate number <optional>
<nullable>

Max outgoing video bitrate (bps); If not specified, retains the existing bitrate limit; A null or a 0 value removes any previously set bitrate limit; This value is set as a hint for variable bitrate codecs, but will not take effect for fixed bitrate codecs; Based on our tests, Chrome, Firefox and Safari all seem to support an average bitrate range of 20000 bps (20 kbps) to 8000000 bps (8 mbps) for a 720p VideoTrack


LocalDataTrackOptions

LocalDataTrack options

Type:
Properties:
Name Type Argument Default Description
maxPacketLifeTime number <optional>
<nullable>
null

Set this to limit the time (in milliseconds) during which the LocalDataTrack will send or re-send data if not successfully delivered on the underlying RTCDataChannel(s). It is an error to specify both this and maxRetransmits.

maxRetransmits number <optional>
<nullable>
null

Set this to limit the number of times the LocalDataTrack will send or re-send data if not acknowledged on the underlying RTCDataChannel(s). It is an error to specify both this and maxPacketLifeTime.

ordered boolean <optional>
true

Set this to false to allow data on the LocalDataTrack to be sent out-of-order.


LocalTrack

Type:

LocalTrackOptions

LocalTrack options

Type:
  • object
Properties:
Name Type Argument Description
logLevel LogLevel | LogLevels

Log level for 'media' modules

name string <optional>

The LocalTrack's name; by default, it is set to the LocalTrack's ID.


LogLevels

You may pass these levels to ConnectOptions to override log levels for individual components.

Type:
  • object
Properties:
Name Type Argument Default Description
default LogLevel <optional>
'warn'

Log level for 'default' modules.

media LogLevel <optional>
'warn'

Log level for 'media' modules.

signaling LogLevel <optional>
'warn'

Log level for 'signaling' modules.

webrtc LogLevel <optional>
'warn'

Log level for 'webrtc' modules.


NetworkQualityConfiguration

Configure verbosity levels for network quality information for LocalParticipant and RemoteParticipants.

Type:
  • object
Properties:
Name Type Argument Default Description
local NetworkQualityVerbosity <optional>
1

Verbosity level for LocalParticipant

remote NetworkQualityVerbosity <optional>
0

Verbosity level for RemoteParticipants


NetworkQualityLevel

NetworkQualityLevel is a value from 0–5, inclusive, representing the quality of a network connection.

Type:
  • number

RemoteTrack

Type:

RemoteTrackPublicationOptions

Type:
  • object
Properties:
Name Type Description
logLevel LogLevel | LogLevels

Log level for 'media' modules


TrackPublicationOptions

Type:
  • object
Properties:
Name Type Description
logLevel LogLevel | LogLevels

Log level for 'media' modules


VideoCodecSettings

Video codec settings.

Type:
  • object
Properties:
Name Type Description
codec VideoCodec

Video codec name


VideoTrackPublication

Type:

VP8CodecSettings

VP8 codec settings.

Type:
Properties:
Name Type Argument Default Description
name VideoCodec

"VP8"

simulcast boolean <optional>
false

Enable/disable VP8 simulcast; if enabled, Twilio's Video SDK will send three video streams of different qualities