首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正确拆卸WebRTC RTCPeerConnection

正确拆卸WebRTC RTCPeerConnection
EN

Stack Overflow用户
提问于 2021-02-08 13:23:17
回答 1查看 161关注 0票数 0

我试着做了一个简单的WebRTC p2p视频聊天浏览器应用。我设置了一个信号服务器,让两个对等点执行所有的SDPICE握手。我的一些代码片段:

代码语言:javascript
复制
pc = new RTCPeerConnection(config);
pc.onicecandidate = (event) => {
 ...
}
pc.ontrack(event) =>{
  if (event.track.kind === 'video') {
    // add the stream as the srcObject of a video tag
  }
  event.streams[0].onremovetrack = (e) => {
    // want to remove the stream from the video tag
  }
}

当一个对等体完成后,我会执行以下操作:

代码语言:javascript
复制
pc.stop();

我只需关闭RTCPeerConnection即可。但我没有看到在另一个对等体上触发onremovetrack

关闭对等项的正确方法是什么,以便通知另一个对等项并触发onremovetrack

EN

回答 1

Stack Overflow用户

发布于 2021-02-09 06:34:36

我认为您应该使用RTCPeerConnection.removeTrack()方法,它将在另一端触发MediaStream.onremovetrack事件。

要获取连接的轨迹,请使用RTCPeerConnection.getSenders()方法。

RTCPeerConnection方法getSenders()返回一个RTCRtpSender对象数组,每个对象代表负责传输一个轨道的数据的RTP发送方。

示例

代码语言:javascript
复制
let senders = pc.getSenders()

senders.forEach((sender) => {
  pc.removeTrack(sender)
})

这将从连接中删除所有曲目。有一种实验方法可以完全关闭连接,RTCPeerConnection.close(),检查compatibility table。在删除轨道后使用它,这样您将获得onremovetrack事件:

代码语言:javascript
复制
pc.close()

调用此方法的

将终止RTCPeerConnection的ICE代理,并终止任何正在进行的ICE处理和任何活动流。

替代

另一种方法是立即调用close()方法,并在另一端侦听RTCPeerConnection.onconnectionstatechange事件,检查example

更多信息

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66096280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档