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
RTCTrackEvent
object, initialized with properties taken from the specifiedRTCTrackEventInit
dictionary. 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'sontrack
event handler.
Properties
Since RTCTrackEvent
is based on Event
, its properties are also available.
receiver
Read only- The
RTCRtpReceiver
used by the track that's been added to theRTCPeerConnection
. streams
Read only Optional- An array of
MediaStream
objects, each representing one of the media streams to which the addedtrack
belongs. By default, the array is empty, indicating a streamless track. track
Read only- The
MediaStreamTrack
which has been added to the connection. transceiver
Read only- The
RTCRtpTransceiver
being 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 BrowsersThe definition of 'RTCTrackEvent' in that specification. | Candidate Recommendation | Initial specification. |
Browser compatibility
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
Update compatibility data on GitHub
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
RTCTrackEvent by Mozilla Contributors is licensed under CC-BY-SA 2.5.