RTCTrackEvent - 表示 WebRTC 的 track 事件

RTCTrackEventWebRTC API 的接口,表示 track 事件,该事件在新的 MediaStreamTrack 添加到 RTCPeerConnectionRTCRtpReceiver 时触发,它是 RTCPeerConnection 的一部分。事件的目标是添加轨道的 RTCPeerConnection 对象。

该事件由 WebRTC 层发送到网站或应用程序,因此您通常不需要自己实例化 RTCTrackEvent

构造函数

RTCTrackEvent()

创建并返回一个新的 RTCTrackEvent 对象,该对象使用从指定的 RTCTrackEventInit 字典中的属性进行初始化。您可能不需要自己创建新的跟踪事件,因为它们通常是由 WebRTC 基础结构创建并发送到关联的 ontrack 事件处理程序。

属性

RTCTrackEvent 基于 Event,因此也继承了它的属性。

receiver 只读

已添加到 RTCPeerConnection 的轨道使用的 RTCRtpReceiver

streams 只读 可选

一个包含 MediaStream 对象的数组,每个对象代表添加的 track 所属的媒体流之一。默认情况下,该数组为空,表示没有流跟踪。

track 只读

已添加到连接中的 MediaStreamTrack

transceiver 只读

新轨道正在使用 RTCRtpTransceiver

轨道事件类型

轨道事件只有一种。

track

在将 track 事件传递到 RTCPeerConnectionontrack 处理程序时,新媒体已完成对特定 RTCRtpReceiver 的协商(由事件的 receiver 属性指定)。

此外,接收方的 track 指定的 MediaStreamTrack 与事件的 track 指定的 MediaStreamTrack 相同,并且该轨道已添加到任何关联的远程 MediaStream 对象中。

您可以添加一个 track 事件侦听器,以在新跟踪可用时得到通知,例如,您可以使用 将其媒体附加到 video 元素上 或 ontrack 事件处理程序属性。

您可以添加一个 track 事件侦听器,以便在新轨道可用时得到通知,例如,可以将其媒体附加到 <video> 元素,使用 RTCPeerConnection.addEventListener()ontrack 事件处理程序属性。

注意: 请记住,当新的入站跟踪已添加到连接中时,您会收到 track 事件,当调用 addTrack() 将轨道添加到连接的远端,也会触发远程对等方上的 track 事件。

实例

这个简单的例子为 track 事件创建了一个事件监听器,它将 <video> 元素(ID 为 videobox)的 srcObject 属性设置为事件的 streams 数组中传递的列表中的第一个流。

peerConnection.addEventListener("track", e => {
  let videoElement = document.getElementById("videobox");
  videoElement.srcObject = e.streams[0];
}, false);

规范

规范 状态 备注
WebRTC 1.0: Real-time Communication Between Browsers
RTCTrackEvent 的定义
候选推荐 初始定义。

桌面浏览器兼容性

特性ChromeEdgeFirefoxInternet ExplorerOperaSafari
基础支持56≤1822 不支持43 支持
receiver56≤1822 不支持43 支持
streams56≤1822 不支持43 支持
track56≤1822 不支持43 支持
transceiver69≤1859 不支持43 支持

移动浏览器兼容性

特性AndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
基础支持5656 未知44 未知43 支持
receiver5656 未知44 未知43 支持
streams5656 未知44 未知43 支持
track5656 未知44 未知43 支持
transceiver6969 未知59 未知43 支持