问题标签 [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 投票
1 回答
295 浏览

javascript - 调用 createAnswer 不会改变 `signallingState`

调用createAnswer没有改变signalingState,它仍然在have-remote-offer。这可能是什么原因。

0 投票
2 回答
1480 浏览

reactjs - RTCPeerConnection 和 createDataChannel 不适用于 Edge

我一直在开发一个应用程序,当一个人登录帐户时,设备的 IP 地址存储在后端和本地存储中。然后当一个人从另一个浏览器登录同一个帐户时,它会显示一个带有最后登录IP地址的弹出窗口。它似乎适用于 chrome 和 Mozilla,但不适用于边缘浏览器。它总是返回 null,因为它没有在 pc.createDataChannel 之后输入代码。

代码片段如下。

我也尝试使用适配器 js,但不确定如何准确使用它。

0 投票
1 回答
1812 浏览

javascript - 页面重新加载后重新连接多个 peerConnections

我正在创建一个 Web 应用程序,用于使用 WebRTC 通过智能手机进行监控,而对于我正在使用 socket.io 的信令服务器。

当我发送一个流时,我在接收这个流的“watch”页面上创建了一个RTCPeerConnection对象。我在单独的页面上发送流。用户最多可以附加来自智能手机的四个流,因此在“观看”页面上最多有四个RTCPeerConnection对象。

一旦出现“传输”页面的报价,就会自动接收流,然后在“监视”页面上创建RTCPeerConnection对象并连接到标准 WebRTC 模式。

“传输”页面:

“观看”页面:

我的 Web 应用程序需要这样的功能,当我们退出“观看”页面并再次返回时,必须显示所有以前包含的流。

为了实现这个功能,我使用了oniceconnectionstatechange方法。如果流断开连接,则执行iceRestart函数,该函数使用选项{iceRestart: true}创建报价

“传输”页面:

问题是当我重新启动“观看”页面时,所有页面“传输”立即发送询问。尽管一次创建了四个RTCPeerConnection对象(假设用户发送了四个流),但只连接了一个对象。

我已经为这个问题苦苦挣扎了好几天。如上面的代码所示,我尝试在对getStream()函数的后续调用中设置增加的时间延迟,我尝试signallingState在执行getStream()函数之前检查连接,我尝试了其他几种方法,但都没有奏效。

如果您需要我的代码的某些部分来提供帮助,请写信。

编辑:

“观看”页面中的 gotDescription() 方法。

console.log加上RTCPeerConnection object

控制台输出: https ://i.stack.imgur.com/dQXkE.png 1

日志显示signalingState连接是“稳定的”,但是当我开发对象时,signalingState等于“have-remote-offer”

像这儿

0 投票
1 回答
359 浏览

javascript - 对等连接保持在 chrome://webrtc-internals/ 即使在断开连接后

我们开发了 SFU 会议解决方案。当用户离开会议时,对等连接不会结束。它以关闭状态显示在 chrome://webrtc-internals/ 中。

  1. 这会算作一个活动的对等连接吗?
  2. 即使活动对等连接计数在限制范围内,此行为是否会使对等连接限制超出?
0 投票
2 回答
1818 浏览

javascript - 如何重置 webrtc 状态?

我有一个问题,有时我需要重置 WebRTC 状态(例如我有时会收到此错误:

无法设置远程报价 sdp:在错误状态下调用:kHaveLocalOffer

但是是否可以在不删除和创建新的 RTCPeerConnection 对象的情况下这样做?我不想停止当前的本地视频捕获...

0 投票
1 回答
753 浏览

javascript - 强制 UDP 用于 Webrtc 对等连接

我在 Chrome 中使用 webrtc RtcPeerConnection API。

我当地的 SDP 报价是这样的

我认为如果 UDP 不工作,它会尝试 TCP。

但!我不希望 TCP 和 TCP 连接会导致异常,如何从本地 SDP 报价中删除 TCP 线路?

0 投票
1 回答
154 浏览

javascript - RTCPeerConnection IOS 12.2 到 Android 7.X

我正在构建 RTCPeerConnection 通信,我发现了一个问题,从 iOS 12.2(仅使用 Ipad 测试)调用到 Android(仅使用 7.11 测试)流将不会交换。

其他同行都可以,比如 iOS 到 Chrome(桌面),iOS 到 iOS,iOS 到 Chrome 桌面,Android 到 iOS 也可以。

使用约束音频仅适用于所有对等方,但在添加视频并且连接来自 iOS 12.2 => Android 时会出现问题。(iOS 提出要约)

这可能是编解码器问题,但 Android 到 iOS 建立视频连接没有问题,所以我不确定。

我使用的是 Tracks,而不是 Streams。

还有其他人遇到过这个问题并有提示吗?

0 投票
2 回答
3967 浏览

javascript - 带有参数 null 的 addIceCandidate 导致错误

我正在尝试学习 WebRTC,我已经在同一页面中连接了两个 RTCPeerConnection,我现在正试图将它们分成两个单独的页面并连接它们。但是,在编写代码并交换提议和答案之后,我注意到initiator.html 上的 addIceCandidate() 将始终使用 null 参数抛出这个

Error at addIceCandidate from queue: TypeError: Failed to execute 'addIceCandidate' on 'RTCPeerConnection': Candidate missing values for both sdpMid and sdpMLineIndex at processCandidateQueue (initiator.html:69)

经过一番阅读,我了解到 null 用于指示 ICE Candidate 收集完成,这里的示例:https : //webrtc.github.io/samples/src/content/peerconnection/pc1/ 收集完成时也执行带有参数 null 的“addIceCandidate” . 但我不明白为什么我现在看到了我看到的错误。

我试过的:

  1. 我曾尝试写一个检查,如果候选人为空,请跳过 addIceCandidate。
  2. 将所有连接逻辑放在更少的按钮中,以减少函数调用之间的延迟
  3. 将 adapter-latest.js 添加到每个页面

结果:

  1. 发起者连接状态为“失败”,接收者连接状态为“新”。无法流式传输到接收器页面。
  2. 抛出了同样的错误
  3. 错误消失了,但连接仍然失败

发起者.html

接收器.html

common.js

common.css

0 投票
0 回答
76 浏览

c++ - 如何在 ubuntu 中安装 JRTPLIB?

我尝试在 ubuntu 机器上安装 JRTPLIB,但我不知道该怎么做,任何人都可以帮助我,拜托。

谢谢你

0 投票
1 回答
247 浏览

javascript - 如何删除 RecordRTC 中的空白帧

我被困在某个点上。请帮我弄清楚。

当任何对等连接(在视频会议中)断开连接并重新连接它们时,会在录制中添加一个空白帧,我正在使用 RecordRTC 并在 Chrome 74.0 中对其进行测试我认为它正在发生,因为当对等连接断开时,RecordRTC 已经有以前连接的数据视频元素,我只想删除那些空白元素。

我附上了录制视频的截图,请帮我弄清楚。

在此处输入图像描述

在这张图片中,您可以看到我们有 5 个屏幕,其中 2、3、4 是空白的,因为对等连接已关闭并重新连接。所以我想在我的 blob 中使用这 2 个工作屏幕(1、5)[ 1= 本地流,5 = 远程流],或者我们可以说是哪个记录。请帮我解决这个问题。

谢谢