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 specifyingoptions
. 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:
-
RangeError
-
TypeError
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' });
-
rewriteLocalTrackIds(room, trackStats)
-
Parameters:
Name Type Description room
Room trackStats
Array.<LocalTrackStats> Returns:
- Type
- Array.<LocalTrackStats>
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
whentracks
are not provided.dominantSpeaker
boolean <optional>
false Whether to enable the Dominant Speaker API or not. This only takes effect in Group Rooms.
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
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 codecsmaxVideoBitrate
number <optional>
<nullable>
null Max outgoing video bitrate (bps); A
null
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 codecsname
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
whentracks
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
-
createLocalTracks options
Type:
- object
Properties:
Name Type Argument Default Description audio
boolean | CreateLocalTrackOptions <optional>
true Whether or not to get local audio with
getUserMedia
whentracks
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
whentracks
are not provided. -
DataTrack
-
A DataTrack is a LocalDataTrack or RemoteDataTrack.
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
value removes any previously set bitrate limitmaxVideoBitrate
number <optional>
<nullable>
Max outgoing video bitrate (bps); If not specified, retains the existing bitrate limit; A
null
value removes any previously set bitrate limit -
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
-
A LocalTrack is a LocalAudioTrack, LocalVideoTrack, or LocalDataTrack.
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
-
A RemoteTrack is a RemoteAudioTrack, RemoteVideoTrack, or RemoteDataTrack.
Type:
-
RemoteTrackPublicationOptions
-
RemoteTrackPublication options
Type:
- object
-
TrackPublicationOptions
-
TrackPublication options
Type:
- object
-
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