new Twilio.Video.LocalVideoTrack(mediaStreamTrack [, options])
Construct a LocalVideoTrack from a MediaStreamTrack.
Parameters:
Name | Type | Argument | Description |
---|---|---|---|
mediaStreamTrack |
MediaStreamTrack | The underlying MediaStreamTrack |
|
options |
LocalTrackOptions |
<optional> |
LocalTrack options |
Properties:
Name | Type | Description |
---|---|---|
id |
Track.ID | The LocalVideoTrack's ID |
isStopped |
boolean | Whether or not the LocalVideoTrack is stopped |
Fires:
Extends
Methods
-
addProcessor(processor)
-
Add a VideoProcessor to allow for custom processing of video frames belonging to a VideoTrack. Only Chrome supports this as of now. Calling this API from a non-supported browser will result in a log warning.
Parameters:
Name Type Description processor
VideoProcessor The VideoProcessor to use.
- Overrides:
Returns:
- Type
- this
Example
class GrayScaleProcessor { constructor(percentage) { this.outputFrame = new OffscreenCanvas(0, 0); this.percentage = percentage; } processFrame(inputFrame) { this.outputFrame.width = inputFrame.width; this.outputFrame.height = inputFrame.height; const context = this.outputFrame.getContext('2d'); context.filter = `grayscale(${this.percentage}%)`; context.drawImage(inputFrame, 0, 0, inputFrame.width, inputFrame.height); return this.outputFrame; } } const localVideoTrack = Array.from(room.localParticipant.videoTracks.values())[0].track; localVideoTrack.addProcessor(new GrayScaleProcessor(100));
-
attach()
-
Create an HTMLVideoElement and attach the VideoTrack to it.
The HTMLVideoElement's
srcObject
will be set to a new MediaStream containing the VideoTrack's MediaStreamTrack.- Inherited From:
- Overrides:
Returns:
videoElement
- Type
- HTMLVideoElement
Example
const Video = require('twilio-video'); Video.createLocalVideoTrack().then(function(videoTrack) { const videoElement = videoTrack.attach(); document.body.appendChild(videoElement); });
-
detach()
-
Detach the VideoTrack from all previously attached HTMLMediaElements.
- Inherited From:
- Overrides:
Returns:
mediaElements
- Type
- Array.<HTMLMediaElement>
Example
const mediaElements = videoTrack.detach(); mediaElements.forEach(mediaElement => mediaElement.remove());
-
disable()
-
Disable the LocalVideoTrack. This is effectively "pause". If a VideoProcessor is added, then
processedTrack
is disabled as well.Fires:
Returns:
- Type
- this
-
enable()
-
Enable the LocalVideoTrack. This is effectively "unpause". If a VideoProcessor is added, then
processedTrack
is enabled as well.Fires:
Returns:
- Type
- this
-
enable( [enabled])
-
Enable or disable the LocalVideoTrack. This is effectively "unpause" or "pause". If a VideoProcessor is added, then
processedTrack
is enabled or disabled as well.Parameters:
Name Type Argument Default Description enabled
boolean <optional>
true Specify false to pause the LocalVideoTrack
Fires:
Returns:
- Type
- this
-
removeProcessor(processor)
-
Remove the previously added VideoProcessor using
addProcessor
API.Parameters:
Name Type Description processor
VideoProcessor The VideoProcessor to remove.
- Overrides:
Returns:
- Type
- this
Example
class GrayScaleProcessor { constructor(percentage) { this.outputFrame = new OffscreenCanvas(0, 0); this.percentage = percentage; } processFrame(inputFrame) { this.outputFrame.width = inputFrame.width; this.outputFrame.height = inputFrame.height; const context = this.outputFrame.getContext('2d'); context.filter = `grayscale(${this.percentage}%)`; context.drawImage(inputFrame, 0, 0, inputFrame.width, inputFrame.height); return this.outputFrame; } } const localVideoTrack = Array.from(room.localParticipant.videoTracks.values())[0].track; const grayScaleProcessor = new GrayScaleProcessor(100); localVideoTrack.addProcessor(grayScaleProcessor); document.getElementById('remove-button').onclick = () => localVideoTrack.removeProcessor(grayScaleProcessor);
-
restart( [constraints])
-
Restart the LocalVideoTrack. This stops the existing MediaStreamTrack and creates a new MediaStreamTrack. If the LocalVideoTrack is being published to a Room, then all the RemoteParticipants will start receiving media from the newly created MediaStreamTrack. You can access the new MediaStreamTrack via the
mediaStreamTrack
property. If you want to listen to events on the MediaStreamTrack directly, please do so in the "started" event handler. Also, the LocalVideoTrack's ID is no longer guaranteed to be the same as the underlying MediaStreamTrack's ID.Parameters:
Name Type Argument Description constraints
MediaTrackConstraints <optional>
The optional MediaTrackConstraints for restarting the LocalVideoTrack; If not specified, then the current MediaTrackConstraints will be used; If
{}
(empty object) is specified, then the default MediaTrackConstraints will be usedFires:
Returns:
Rejects with a TypeError if the LocalVideoTrack was not created using an one of
createLocalVideoTrack
,createLocalTracks
orconnect
; Also rejects with the DOMException raised bygetUserMedia
when it fails- Type
- Promise.<void>
Example
const { connect, createLocalVideoTrack } = require('twilio-video'); // Create a LocalVideoTrack that captures video from the front-facing camera. createLocalVideoTrack({ facingMode: 'user' }).then(function(localVideoTrack) { return connect('token', { name: 'my-cool-room', tracks: [localVideoTrack] }); }).then(function(room) { // Restart the LocalVideoTrack to capture video from the back-facing camera. const localVideoTrack = Array.from(room.localParticipant.videoTracks.values())[0].track; return localVideoTrack.restart({ facingMode: 'environment' }); });
-
stop()
-
Calls stop on the underlying MediaStreamTrack. If you choose to stop a LocalVideoTrack, you should unpublish it after stopping.
Fires:
Returns:
- Type
- this
Events
-
dimensionsChanged
-
The VideoTrack's dimensions changed.
Parameters:
Name Type Description track
VideoTrack The VideoTrack whose dimensions changed
- Inherited From:
- Overrides:
-
disabled
-
The LocalVideoTrack was disabled, i.e. "muted".
Parameters:
Name Type Description track
LocalVideoTrack The LocalVideoTrack that was disabled
- Overrides:
-
enabled
-
The LocalVideoTrack was enabled, i.e. "unmuted".
Parameters:
Name Type Description track
LocalVideoTrack The LocalVideoTrack that was enabled
- Overrides:
-
started
-
The LocalVideoTrack started. This means there is enough video data to begin playback.
Parameters:
Name Type Description track
LocalVideoTrack The LocalVideoTrack that started
- Overrides:
-
stopped
-
The LocalVideoTrack stopped, either because LocalVideoTrack#stop or LocalVideoTrack#restart was called or because the underlying MediaStreamTrack ended.
Parameters:
Name Type Description track
LocalVideoTrack The LocalVideoTrack that stopped