当用户在不同的网络上时Webrtc没有视频

Posted

技术标签:

【中文标题】当用户在不同的网络上时Webrtc没有视频【英文标题】:Webrtc no video when users are on different network 【发布时间】:2012-10-13 00:14:01 【问题描述】:

所以我建立了一个网站。带有一个 clienta 页面和一个 clientb 页面。

这基本上是该网站的拆分版本: https://webrtc-demos.appspot.com/html/pc2.html

我正在使用信号器(websockets)在客户端之间交换信息。

当用户在同一台​​计算机上打开 cleinta 和 b 时,它可以正常工作。

当用户在一台计算机上打开 clienta 并在另一台计算机上打开 clientb 但两台计算机在同一网络上时,它工作正常。

当用户在一台计算机上打开 clienta 并在另一台计算机上打开 clientb 但在不同的网络上没有视频或音频。

当交换冰消息时,我会传回一个数字,这样我就知道它发送的顺序。在另一端,它们并不总是以相同的顺序到达,但音频#1 总是在音频#2 之前到达那里。视频也是如此。

在所有情况下,我都使用 chrome dev 24。

我意识到顺序和时间是 webrtc 的一切。我只是不明白它如何在同一网络上的不同电脑上工作,而不是在不同的网络上工作。我应该指出,当我说相同的网络时,我在工作中使用 2 台电脑和在家中使用 2 台电脑进行测试。所以我不认为它是防火墙的东西。

有什么想法吗?

我确实查看了https://apprtc.appspot.com/,因为它是一个稍微相关的链接。这导致我添加了几个设置超时,尽管它们似乎没有帮助。

最后一件事,我确实提到了冰消息。我还应该注意,双方都发送和接收所有消息。创建报价并创建答案。因此,它可以在相同的网络机器上运行。

更新:

我正在使用 jsep 和根据 webrtc.org 的所有最新语法

2012 年 11 月 15 日更新:

那么有没有用于创建媒体中继的开源包?

特别是 .net,但可能是 php。当前站点是面向公众的,这就是我能够在多个网络上进行测试的方式。所以看起来我只需要另一个端点来进行媒体中继。

2012 年 11 月 16 日更新:

希望我能让它工作或从其他开发人员那里获得宝贵的意见,我将我的代码放在 github 上。

https://github.com/thorst/RTC

2012 年 11 月 21 日更新

该代码现在适用于除不同网络连接之外的所有内容。 (如本文所述)

2013 年 5 月 28 日更新

今年 google io 在解释转弯、眩晕和冰方面要好得多。

http://www.youtube.com/watch?feature=player_embedded&v=p2HzZkd2A40

这里的参考是老年人帮助我入门

http://www.youtube.com/watch?v=E8C8ouiXHHk

http://www.youtube.com/watch?v=dAhhniqwkp8

【问题讨论】:

【参考方案1】:

Chrome 还没有实现 TURN。 STUN 仅对某些类型的 NAT 有帮助,但对家庭路由器中流行的对称 NAT 没有帮助。您需要一个具有公共 IP 的媒体中继来连接对称 NAT 后面的两个设备,其标准是 TURN https://www.rfc-editor.org/rfc/rfc5766。

【讨论】:

感谢您的回答。所以我根据你的回答假设 TURN 在未来某个时候由 chrome 实现?

以上是关于当用户在不同的网络上时Webrtc没有视频的主要内容,如果未能解决你的问题,请参考以下文章

微信视频通话码流是多少

当用户将鼠标悬停在 TreeView 控件的特定 TreeNode 控件上时显示不同的光标

WebRTC 通信原理

Android IOS WebRTC 音视频开发总结(七一)-- H265/H264有何不同

WebRTC 错误:无法创建远程会话描述。在错误的状态下调用

R - 当用户在不同的页面上时,闪亮的数据表(renderDataTable)重新加载到第一页并更新某个列值(selectInput)