问题标签 [rtcpeerconnection]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
6369 浏览

javascript - 如何销毁 RTCPeerConnection?

我可以使用以下代码创建一个新的对等连接对象:

发生这种情况时,chrome 将其显示为新的连接对象chrome://webrtc-internals/

我想稍后销毁这个对象。怎么做?我试过了

但这似乎没有任何作用,因为peer变量仍然是 RTCPeerConnection 类型,我仍然可以看到它在chrome://webrtc-internals/.

如果我取消设置变量,比如

它仍然显示在chrome://webrtc-internals/. 但是,如果我关闭网页,它会立即从chrome://webrtc-internals/.

释放 RTCPeerConnection 对象的正确方法是什么?我问是因为如果我不释放它们,我偶尔会被网络浏览器拒绝创建新的 RTCPeerConnection,因为它们中有太多正在使用中。

0 投票
2 回答
1241 浏览

javascript - 如何在 JavaScript 中正确销毁 RTCPeerConnection?

当我创建一个new RTCPeerConnection()时,我无法用 peer.close() 销毁它,据我所知,一段时间后我的资源用完了。当网页创建大量RTCPeerConnections 时,大约 600 次尝试后停止工作,并在 Chrome 中抛出以下错误:

未捕获的 DOMException:无法构造“RTCPeerConnection”:无法创建这么多 PeerConnections

这是一个测试脚本,它将帮助您解决错误。这只是说明性的,即使对等点的创建速度要慢得多,也会出现问题:

我希望它在调用 peer.close() 时释放所有资源,或者至少在 peer 设置为 null 时释放所有资源,所以我看不出浏览器为什么会抛出有这么多 PeerConnections 的错误。我做错了什么吗?如何正确销毁对等体?谢谢

0 投票
1 回答
145 浏览

angular - 找不到名称“RTCSignalingState”

连接 RTCPeerConnection 时出现编译时错误。

我已经安装了 npm install --save-dev @types/webrtc 我需要安装什么新东西吗?

0 投票
0 回答
1420 浏览

javascript - 重新协商的 WebRTC 问题(在 addTrack、removeTrack 之后)

我有一个应用程序,每次通话都以音频开头,但用户有机会切换视频聊天(有一个按钮)。

这是问题,在第一次切换后一切正常,但在切换到音频并再次切换到视频远程流后,不使用Firefox它的用户不会出现这意味着Firefox's对等连接在添加localstream. 看起来FireFox removeTrack()功能在其他浏览器中的工作方式不同,在FireFox删除的发件人中保留在 peerconnection 对象中,但在其他浏览器中没有。

当任何用户不使用时,Firefox不会出现此问题。

下面是项目的链接(这是angular框架架构)和附加描述。
项目
ps:' app/src/app/app.components.ts '中的主要逻辑

我的问题

它可能是什么原因以及如何解决它?

如果您有这方面的经验,请提供您的一些建议和意见。这将非常有用,任何帮助将不胜感激!

非常感谢提前

0 投票
1 回答
9203 浏览

javascript - 如何在 Chrome 中为 WebRTC 调用者设置远程描述而不会出错?

我希望逻辑没有缺陷。

第 1 步:来电者创建报价

第 2 步:调用者设置 localDescription

第三步:调用者将描述发送给被调用者

//------------------------------------------------ ------//

第四步:被调用者接收offer sets remote description

第 5 步:被调用者创建答案

第六步:被叫设置本地描述

第 7 步:被调用者将描述发送给调用者

//------------------------------------------------ ------//

第 8 步:呼叫者收到应答并设置远程描述

这是上面的代码

现在此代码在执行第 8 步时抛出错误

DOMException:无法在“RTCPeerConnection”上执行“setRemoteDescription”:无法设置远程报价 sdp:在错误状态下调用:kHaveLocalOffer

DOMException:无法在“RTCPeerConnection”上执行“addIceCandidate”:处理 ICE 候选者时出错

尝试调试但未发现逻辑或代码中的任何缺陷。注意到该pc对象具有的一件奇怪的事情,localDescription并且currentLocalDescription我认为创建答案的被调用者必须同时具有描述类型 to beanswer而是显示localDescriptionto beoffercurrentLocalDescriptiontype is answer

在此处输入图像描述 我不知道它是否应该像我初学者那样表现得那样。

提前致谢。

0 投票
0 回答
627 浏览

firefox - 如何在 Firefox 中获取 webrtc 抖动缓冲区?

我正在使用 webrtc peerconnection.getstats 来获取各种参数来检查 Firefox 中的通话质量。我想获取抖动缓冲区参数,但它没有在 getstats 响应中公开(但它在 chrome 中可用)。缓冲区也显示在 about:webrtc 页面中:

火狐统计

有没有办法在 Firefox 中获得这个抖动缓冲区?

编辑:添加代码

0 投票
1 回答
771 浏览

javascript - 连接多个远程对等点后如何关闭媒体流?

我正在创建多个 webrtc 对等连接并使用创建单个媒体流

一切正常,直到最后一个对等连接关闭并且我想关闭媒体流。

如果只使用了 1 个对等连接,那么一切都会按计划关闭。如果超过 1 个对等连接使用了 MediaStream,则 MediaStream 变为 null ,但浏览器上的摄像头指示灯和摄像头灯都保持亮起。

我错过了什么?

0 投票
0 回答
856 浏览

webrtc - 在 localhost 127.0.0.1 上连接的对等方之间的 WebRTC 连接

我这里的用例略有不同。我想在同一主机上运行的两个对等方之间建立 webrtc 连接。我的硬件没有连接(没有 WiFi、以太网),我只有一个接口(127.0.0.1)。我正在使用两个对等进程之间的直接函数调用来发送信号。

从 peer1 我可以生成一个报价并将其发送给 peer2。peer2 能够设置远程 SDP,并且我得到了 SetSessionDescriptionObserver::OnSuccess() 回调,但 WebRTC 没有在任何对等方上生成任何 ICE 候选。我查看了配置,但找不到与我的用例匹配的任何内容。

这是一个有效的用例,它应该工作吗?

一个观察结果是,如果我将我的硬件连接到 WiFi(有/无互联网接入),一切正常。

0 投票
2 回答
2803 浏览

webrtc - WebRTC 信道可靠性

我想检查一下我对 WebRTC 数据通道的理解是否正确,特别是可以通过改变字典的ordered&maxRetransmitsmaxPacketLifeTime属性来实现的不同类型的通道。RTCDataChannelInit我的以下假设是否正确:

  1. 创建一个可靠有序的通道,如 TCP,但基于消息而不是流:
  1. 创建一个可靠无序的通道(应该maxRetransmitsmaxPacketLifeTime也应该指定以实现可靠性?)
  1. 创建一个不可靠无序的通道,例如 UDP
  1. 创建一个不可靠“有序”的通道,即如果在较晚的消息之后到达,较早的消息将被丢弃
0 投票
0 回答
433 浏览

google-chrome - 铬 72.0.3626.81 和 RTCPeerConnection.setLocalDescription

对于 chrome 之前的版本 71.0.3578.98 和 firefox 64.0.2 或 65.0,相同的代码可以正常工作。

它无法创建报价,因此永远不会更新 localDescription。

根本原因的任何线索或如何找到解决方案?

使用 chrome://webrtc-internals/ 进行调试我可以看到一个 setLocalDescriptionOnFailure ,现在我需要知道为什么以及如何修复它。

这是代码:

在此处输入图像描述