RTCPeerConnection: addstream 事件

已弃用:此特性不再推荐。虽然某些浏览器可能仍然支持它,但它可能已经从相关的网络标准中删除,可能正在删除过程中,或者可能仅为兼容性目的而保留。请避免使用它,如果可能,请更新现有代码;请参阅本页底部的兼容性表格以指导您的决策。请注意,此特性可能随时停止工作。

非标准:此特性未标准化。我们不建议在生产环境中使用非标准特性,因为它们浏览器支持有限,并且可能会更改或被移除。但是,在没有标准选项的特定情况下,它们可以是合适的替代方案。

已废弃的 addstream 事件会在新的媒体(以 MediaStream 对象的形式)被添加到 RTCPeerConnection 时发送给它。

警告:此事件已从 WebRTC 规范中移除。您应该改为监听 track 事件,该事件会在每个添加到 RTCPeerConnection 的媒体轨道时发送。

同样,您可以通过监听 removestream 事件来监视从连接中移除的流。

此事件不可取消,也不会冒泡。

语法

在诸如 addEventListener() 之类的方法中使用事件名称,或设置事件处理程序属性。

js
addEventListener("addstream", (event) => { })

onaddstream = (event) => { }

事件类型

一个 MediaStreamEvent。继承自 Event

事件属性

作为 EventMediaStreamEvent,此事件还实现了这些属性:.

MediaStreamEvent.stream 只读

包含与事件关联的流的 MediaStream

示例

此示例用于确定用户的浏览器是否支持 track 事件。如果支持,则设置 track 事件监听器;否则,设置 addstream 事件监听器。pc 是一个 RTCPeerConnection

js
if (pc.addTrack !== undefined) {
  pc.ontrack = (ev) => {
    ev.streams.forEach((stream) => doAddStream(stream));
  };
} else {
  pc.onaddstream = (ev) => {
    doAddStream(ev.stream);
  };
}

这会为添加到 RTCPeerConnection 的每个流调用一次 doAddStream() 函数,无论浏览器发送的是 addstream 还是 track

您还可以使用 addEventListener() 方法来设置事件监听器。

js
pc.addEventListener("addstream", (ev) => doAddStream(ev.stream), false);

浏览器兼容性

另见