The WebRTC API interface RTCTrackEvent represents the track event, which is sent when a new MediaStreamTrack is added to an RTCRtpReceiver which is part of the RTCPeerConnection. The target is the RTCPeerConnection object to which the track is being added.
This event is sent by the WebRTC layer to the web site or application, so you will not typically need to instantiate an RTCTrackEvent yourself.
Constructor
RTCTrackEvent()- Creates and returns a new
RTCTrackEventobject, initialized with properties taken from the specifiedRTCTrackEventInitdictionary. You will probably not need to create new track events yourself, since they're typically created by the WebRTC infrastructure and sent to the connection'sontrackevent handler.
Properties
Since RTCTrackEvent is based on Event, its properties are also available.
receiverRead only- The
RTCRtpReceiverused by the track that's been added to theRTCPeerConnection. streamsRead only Optional- An array of
MediaStreamobjects, each representing one of the media streams to which the addedtrackbelongs. By default, the array is empty, indicating a streamless track. trackRead only- The
MediaStreamTrackwhich has been added to the connection. transceiverRead only- The
RTCRtpTransceiverbeing used by the new track.
Track event types
There is only one type of track event.
track
The track event is sent to the RTCPeerConnection when a new track has been added to the connection. By the time the track event is delivered to the RTCPeerConnection's ontrack handler, the new media has completed its negotiation for a specific RTCRtpReceiver (which is specified by the event's receiver property).
In addition, the MediaStreamTrack specified by the receiver's track is the same one specified by the event's track, and the track has been added to any associated remote MediaStream objects.
You can add a track event listener to be notified when the new track is available so that you can, for example, attach its media to a <video> element, using either RTCPeerConnection.addEventListener() or the ontrack event handler property.
Note: It may be helpful to keep in mind that you receive the track event when a new inbound track has been added to your connection, and you call addTrack() to add a track to the far end of the connection, thereby triggering a track event on the remote peer.
Example
This simple example creates an event listener for the track event which sets the srcObject of the <video> element with the ID videobox to the first stream in the list passed in the event's streams array.
peerConnection.addEventListener("track", e => {
let videoElement = document.getElementById("videobox");
videoElement.srcObject = e.streams[0];
}, false);
Specifications
| Specification | Status | Comment |
|---|---|---|
| WebRTC 1.0: Real-time Communication Between Browsers The definition of 'RTCTrackEvent' in that specification. |
Candidate Recommendation | Initial specification. |
Browser compatibility
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
RTCTrackEvent | Chrome Full support 56 | Edge Full support ≤18 | Firefox Full support 22 | IE No support No | Opera Full support 43 | Safari Full support Yes | WebView Android Full support 56 | Chrome Android Full support 56 | Firefox Android Full support 44 | Opera Android Full support 43 | Safari iOS Full support Yes | Samsung Internet Android Full support 6.0 |
receiver | Chrome Full support 56 | Edge Full support ≤18 | Firefox Full support 22 | IE No support No | Opera Full support 43 | Safari Full support Yes | WebView Android Full support 56 | Chrome Android Full support 56 | Firefox Android Full support 44 | Opera Android Full support 43 | Safari iOS Full support Yes | Samsung Internet Android Full support 6.0 |
streams | Chrome Full support 56 | Edge Full support ≤18 | Firefox Full support 22 | IE No support No | Opera Full support 43 | Safari Full support Yes | WebView Android Full support 56 | Chrome Android Full support 56 | Firefox Android Full support 44 | Opera Android Full support 43 | Safari iOS Full support Yes | Samsung Internet Android Full support 6.0 |
track | Chrome Full support 56 | Edge Full support ≤18 | Firefox Full support 22 | IE No support No | Opera Full support 43 | Safari Full support Yes | WebView Android Full support 56 | Chrome Android Full support 56 | Firefox Android Full support 44 | Opera Android Full support 43 | Safari iOS Full support Yes | Samsung Internet Android Full support 6.0 |
transceiver | Chrome Full support 69 | Edge Full support ≤18 | Firefox Full support 59 | IE No support No | Opera Full support 43 | Safari Full support Yes | WebView Android Full support 69 | Chrome Android Full support 69 | Firefox Android Full support 59 | Opera Android Full support 43 | Safari iOS Full support Yes | Samsung Internet Android Full support 6.0 |
Legend
- Full support
- Full support
- No support
- No support
