问题标签 [peer-connection]

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 回答
348 浏览

firefox - 无法在 Mozilla Firefox (WebRTC) 中设置本地描述

我正在使用 Mozilla 的应答呼叫文档来应答Mozilla Firefox 35.0.1中的 WebRTC 呼叫,但每次我尝试在对等连接上设置本地描述时都会失败。

错误是带有以下消息的INTERNAL_ERROR :

无法启动媒体频道原因 = OK

我的代码是用 CoffeeScript 编写的,但希望它易于阅读:

如您所见,在对等连接上设置本地描述是第五步。以下是我之前执行的步骤:

  1. 请求用户媒体流 ( navigator.getUserMedia)
  2. 设置本地媒体流 ( pc.addStream / pc.onaddstream)
  3. 设置远程 SDP ( pc.setRemoteDescription)
  4. 创建答案 ( pc.createAnswer)
  5. 设置本地 SDP ( pc.setLocalDescription)

这是 Firefox 生成的 SDP 答案,我尝试通过以下方式设置对等连接pc.setLocalDescription

我需要注意其他事情吗?

0 投票
1 回答
847 浏览

video - 使用数据通道 + 媒体源扩展 API 发送本地视频

我一直在玩 WebRTC peerconnections,但似乎我正在扩展 peerconnections 和 p2p 视频的可能性(至少现在是这样)

现在,我一直在研究 Media Source Extensions API,可能会创建一个替代解决方法。

上周左右一直在使用 MSE API,到目前为止能够使本地 .webm 视频文件正常工作 - 即将视频文件分块并将其显示在 html 视频元素上。

接下来,我尝试让节点服务器将视频分块并将其发送到客户端,然后客户端使用 MSE API 显示视频(MSE 应该如何使用的实际示例)

现在我想知道是否可以通过 p2p 数据通道从 html 视频元素发送本地视频,然后使用 MSE API 在接收器客户端上拼接视频。这几乎是在重新创建 WebRTC 对等连接现在已经在做的事情

只是想知道是否有人尝试过这个,因为我怀疑人们是否会正常使用这些 API。不管怎样,我很快就会尝试这个:]

0 投票
1 回答
316 浏览

sockets - peerconnection_client 不显示对等点列表

在这里,我尝试运行 WebRTC 代码中可用的一些示例......我在我的机器(笔记本电脑,运行 Windows 8.1)上运行 peerconnection_server.exe,它成功运行。我还通过 peerconnection_client.exe 运行 2 个客户端。在 peerconnection_server 我看到以下内容:

服务器侦听端口 8888 新连接...
添加了新成员(总数 = 1):lkarapetyan@SYS0700
断开套接字
连接总数:1
新连接...
新连接...
添加了新成员(总数 = 2):lkarapetyan@SYS0700
Disconnecting socket
Total connected: 2
Disconnecting socket
Total connected: 2
New connection...
New connection...

假设这意味着两个客户端都已成功连接。但是,在客户端,已连接的对等点列表仍然为空(也尝试在另一台机器上运行另一个客户端并连接到服务器,结果是相同的)。

为什么 peerconnection_client 中没有显示已连接的对等点列表?我究竟做错了什么?

0 投票
1 回答
2068 浏览

javascript - 如何判断 pc.onnegotiationneeded 是否因为流已被删除而被解雇?

我正在处理一个RTCPeerConnection ( ),它有一个名为onnegotiationneededpc的事件处理程序。

当使用或onnegotiationneeded添加或删除完整的媒体流时,会触发“ ” 。pc.addStreampc.removeStream

是否可以在onnegotiationneeded函数内部判断它是否因为添加或删除了流而被执行?因为通过阅读文档我找不到那个状态。

目前,当我做pc.addStream或时,我正在切换一个标志pc.removeStream。这个标志可以帮助我判断onnegotiationneeded它是否被流删除触发。

但我想知道浏览器(Chrome 40 或 Firefox 36)API 是否已经提供了这样的属性?

0 投票
1 回答
1775 浏览

android - java.lang.UnsatisfiedLinkError:未找到本机方法:org.webrtc.PeerConnectionFactory.initializeFieldTrials:(Ljava/lang/String;)V

我正在开发一个具有视频聊天功能的模块。为此,我正在使用 Webrtc。我非常接近做到这一点,但我在打电话时遇到了一个问题。

服务器总是返回

在此之后,我遇到了另一个问题,例如,

首先,我遇到了 jingle 本机库的问题。我也将它集成到 jni 目录中。还更新了 peerconnection_jni.cc 文件但同样的错误..

我也可以附加 peerconnection_jni.cc 文件(如果需要)。

我也在谷歌上搜索过。但没有得到实际输出。谁能帮帮我吗?

更新 :

这是我的 peerconnection_jni.cc 的代码

这是我的 Logcat 输出。

0 投票
1 回答
3349 浏览

javascript - WebRTC Ice State =“失败”黑色视频

在 Firefox 中的 about:webrtc 中,我的 IceState 总是“进行中”,直到它失败。如果我在本地使用该网站,它可以工作,但如果一个朋友尝试给我打电话,它不起作用,远程启动但它是空白的。

轮到我眩晕服务器:

我正在使用 AWS 服务器作为 STUN 和信令。关于:webrtc 错误:

INFO 设置对状态 FAILED ERR 指定了太多组件 WARNING 指定的虚假候选 ERR 配对本地涓流 ICE 候选 srflx

0 投票
2 回答
1830 浏览

javascript - 仅适用于一对一,其中多对多,webrtc

我正在为这种风格的视频通话开发一个会议风格的应用程序(多对多)。该代码在 GitHub 上可用,但我没有太多 node.js 经验,因此我决定使用 PHP 创建自己的服务器。

我使用 WebSockets 创建了服务器。这很简单——它接收消息并将它们转发给所有其他连接的客户端(即,不是发送消息的客户端)。仅此而已-仅此而已;一点也不差。

但我的问题是这种架构不允许客户端与多个人连接,即,当客户端尝试与第三人连接时,附加流会失败。客户端只能一对一连接。

我不知道错误是在 JavaScript 中还是我需要改进服务器。我该怎么做才能使其连接到所有加入的客户?

查看我的代码:

HTML

JavaScript

0 投票
1 回答
1731 浏览

webrtc - 如何关闭 webrtc 数据通道?

我不能使用以下方法。

因为我只使用数据通道(不使用 getUserMedia)

有没有办法关闭数据通道?

0 投票
0 回答
288 浏览

webrtc - 无法在对等连接的接收端获取 WebRTC 音轨数据(在本机 C++ 代码中)

我正在尝试使用PeerConnection从一个本机(C++)端点向另一个端点发送视频和音频数据。我已经弄清楚如何在接收端点上获取视频帧,但似乎无法获取音频数据。

在回调中,MediaStreamInterface我在接收端点上OnAddStream正确报告同时具有视频和音频轨道。为了获取音频数据,我尝试在接收到的音轨上实现AudioTrackSinkInterface并调用,但从未调用回调。并且由于某种原因,音轨的方法返回 NULL ......所以我不知道如何从流中提取音频数据。AddSink()OnDataGetRenderer()

谢谢。

0 投票
1 回答
411 浏览

webrtc - 如何在没有 localStream 的情况下创建对等连接?

我只想实现一个客户发送 mediaSteam而另一个客户接收 mediaSteam。 所以 Receiver 客户端不需要添加 localSteam。我只需编写 pc.addStream(null) 代码。但不起作用。我如何通过 WebRtc 实现这一目标?