Properties:
| Name | Type | Argument | Description | 
|---|---|---|---|
| isEnabled | boolean | Whether the RemoteVideoTrack is enabled | |
| isSwitchedOff | boolean | Whether the RemoteVideoTrack is switched off | |
| sid | Track.SID | The RemoteVideoTrack's SID | |
| priority | Track.Priority | <nullable> | The subscribe priority of the RemoteVideoTrack | 
Fires:
Extends
Methods
- 
    addProcessor(processor)
- 
    
    Add a VideoProcessor to allow for custom processing of video frames belonging to a VideoTrack. When a Participant un-publishes and re-publishes a VideoTrack, a new RemoteVideoTrack is created and any VideoProcessors attached to the previous RemoteVideoTrack would have to be re-added again. 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 processorVideoProcessor The VideoProcessor to use. - Overrides:
 Returns:- Type
- this
 Exampleclass 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 grayscaleProcessor = new GrayScaleProcessor(100); Array.from(room.participants.values()).forEach(participant => { const remoteVideoTrack = Array.from(participant.videoTracks.values())[0].track; remoteVideoTrack.addProcessor(grayscaleProcessor); });
- 
    attach()
- 
    
    Create an HTMLVideoElement and attach the VideoTrack to it. The HTMLVideoElement's srcObjectwill be set to a new MediaStream containing the VideoTrack's MediaStreamTrack.- Inherited From:
- Overrides:
 Returns:videoElement - Type
- HTMLVideoElement
 Exampleconst 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>
 Exampleconst mediaElements = videoTrack.detach(); mediaElements.forEach(mediaElement => mediaElement.remove()); 
- 
    removeProcessor(processor)
- 
    
    Remove the previously added VideoProcessor using addProcessorAPI.Parameters:Name Type Description processorVideoProcessor The VideoProcessor to remove. - Overrides:
 Returns:- Type
- this
 Exampleclass 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 grayscaleProcessor = new GrayScaleProcessor(100); Array.from(room.participants.values()).forEach(participant => { const remoteVideoTrack = Array.from(participant.videoTracks.values())[0].track; remoteVideoTrack.addProcessor(grayscaleProcessor); }); document.getElementById('remove-button').onclick = () => { Array.from(room.participants.values()).forEach(participant => { const remoteVideoTrack = Array.from(participant.videoTracks.values())[0].track; remoteVideoTrack.removeProcessor(grayscaleProcessor); }); }
- 
    setContentPreferences(contentPreferences)
- 
    
    Set the RemoteVideoTrack's content preferences. This method is applicable only for the group rooms and only when connected with videoContentPreferencesMode in video bandwidth profile options set to 'manual' Parameters:Name Type Description contentPreferencesVideoContentPreferences requested preferences. Returns:- Type
- this
 
- 
    setPriority(priority)
- 
    
    Update the subscribe Track.Priority of the RemoteVideoTrack. Parameters:Name Type Argument Description priorityTrack.Priority <nullable> 
 the new subscribe Track.Priority; If null, then the subscribe Track.Priority is cleared, which means the Track.Priority set by the publisher is now the effective priority.Throws:RangeErrorReturns:- Type
- this
 
- 
    switchOff()
- 
    
    Request to switch off a RemoteVideoTrack, This method is applicable only for the group rooms and only when connected with clientTrackSwitchOffControl in video bandwidth profile options set to 'manual' Returns:- Type
- this
 
- 
    switchOn()
- 
    
    Request to switch on a RemoteVideoTrack, This method is applicable only for the group rooms and only when connected with clientTrackSwitchOffControl in video bandwidth profile options set to 'manual' Returns:- Type
- this
 
Events
- 
    dimensionsChanged
- 
    
    The RemoteVideoTrack's dimensions changed. Parameters:Name Type Description trackRemoteVideoTrack The RemoteVideoTrack whose dimensions changed - Overrides:
 
- 
    disabled
- 
    
    The RemoteVideoTrack was disabled, i.e. "paused". Parameters:Name Type Description trackRemoteVideoTrack The RemoteVideoTrack that was disabled - Overrides:
 
- 
    enabled
- 
    
    The RemoteVideoTrack was enabled, i.e. "resumed". Parameters:Name Type Description trackRemoteVideoTrack The RemoteVideoTrack that was enabled - Overrides:
 
- 
    started
- 
    
    The RemoteVideoTrack started. This means there is enough video data to begin playback. Parameters:Name Type Description trackRemoteVideoTrack The RemoteVideoTrack that started - Overrides:
 
- 
    switchedOff
- 
    
    A RemoteVideoTrack was switched off. Parameters:Name Type Description trackRemoteVideoTrack The RemoteVideoTrack that was switched off 
- 
    switchedOn
- 
    
    A RemoteVideoTrack was switched on. Parameters:Name Type Description trackRemoteVideoTrack The RemoteVideoTrack that was switched on