您好我正在使用AppRTCDemo并在其服务器上工作。目前的机制是如何交换聊天室名称和进入同一个房间连接同伴。
但我想从一台设备拨打电话接听来自其他设备的电话,然后同伴应该进入视频会议室,
我已经搜索了很多,我已经想到了,我需要信号服务器,我没有,也不想把它放在手上,
现在在这种情况下,其他设备如何知道设备正在拨打并共享特定的房间名称以接受并在Android客户端进入同一房间进行视频通话。
答案 0 :(得分:0)
有两个安卓apk可用于 WebRTC ,appRtcDemo
和webRtcDemo
。 appRtcDemo
apk可用于Android设备与浏览器的连接。您需要提供房间ID才能连接到一个房间。如果您是房间发起人,则必须输入-1。
如果你想连接两个Android设备,那么你必须编译并安装webRtcDemo
apk。此apk界面提供输入另一个设备的IP地址的位置,反之亦然,然后两个设备都将连接。
请通过 - > http://www.webrtc.org/reference/getting-started
了解更多信息。这两个apks我已经编译和安装并检查它是如何工作的。
我能够使用webrtcdemo在两个Android设备之间成功调用。但我测试使用我办公室网络的WLAN。我没有进一步使用它,因为我使用apprtcdemo进行应用程序参考。我的建议是当你在webrtcdemo中输入远程ip时,只需检查是否取消选中了loop-back。我想你的环回已启用,所以你收到自己的视频包,虽然你已经输入了远程IP。确保在拨打电话时禁用环回。
答案 1 :(得分:0)
本书中可以找到一个非常好的解释http://chimera.labs.oreilly.com/books/1230000000545/ch03.html#STUN_TURN_ICE 它提供了WebRTC如何使用ICE技术的基础知识。
特别是假设已知STUN服务器的IP地址,WebRTC应用程序首先向STUN服务器发送绑定请求。 STUN服务器回复一个响应,该响应包含从公共网络看到的客户端的公共IP地址和端口。
现在,应用程序发现了可以通过SDP发送给其他对等方的公共IP和端口元组。 (请注意,SDP是通过外部信令通道发送的,f.i。websocket通过Web服务建立)
有了这个机制,每当两个对等体想要通过UDP相互通信时,他们就可以使用已建立的公共IP和端口元组来交换数据。
不幸的是,在某些情况下,UDP可能会被防火墙阻止。为了解决这个问题,每当STUN失败时,我们都可以使用NAT(TURN)协议的遍历使用中继作为回退,如果所有其他方法都失败,它可以在UDP上运行并切换到TCP。
WebRTC向客户端JS应用程序提供SDP Offer以发送(但JS应用程序需要)到另一个设备,该设备使用它来生成SDP应答。
诀窍在于SDP包括ICE候选者(实际上#34;尝试通过此IP地址和此端口&#34来与我交谈)。 ICE致力于打开防火墙中的开放端口;虽然如果双方都是对称的NAT,它通常是不可能的,并且可以使用替代候选者(在TURN服务器上)。
一旦他们直接通话(或通过TURN,实际上是数据包镜像),他们就可以打开DTLS连接并使用它来锁定SRTP-DTLS媒体流,并通过DTLS发送DataChannel。
编辑: 缩略语:http://blog.1click.io/10-jargons-abbreviations-for-webrtc-fans/其余部分,有谷歌。其中大部分是由IETF(http://ietf.org/)
定义的编辑2: Firefox和Chrome(以及规范)已经转向使用" trickle"对于ICE候选人来说,ICE候选人通常会在PeerConnection面前加入并独立于初始SDP进行交换(尽管您可以等到初始候选人准备好之后再发送报价,并将它们捆绑在一起)。 请参阅https://webrtcglossary.com/trickle-ice/和https://datatracker.ietf.org/doc/draft-ietf-ice-trickle/