在客户端为 AppRTCDemo 添加 dial/receive 信令机制

Add dial/receive signalling mechanism for AppRTCDemo at client side

您好,我正在使用 AppRTCDemo 并在他们的服务器上运行。当前的机制是如何交换 chat-rooms 名称并进入同一个房间来连接对等方的。

但我想从一台设备拨打电话以接收来自另一台设备的电话,然后同行应该进入视频房间session,

我搜索了很多,我想出了我需要的 signalling-server,但我没有也不想动手,

现在在这种情况下,另一台设备如何知道设备一正在拨打和共享特定房间名称以在 Android 客户端接受并进入同一房间进行视频通话。

https://github.com/njovy/AppRTCDemo

有两个 android apk 可用于 WebRTCappRtcDemowebRtcDemoappRtcDemo apk 可用于 android 设备到浏览器的连接。您需要提供房间 ID 才能连接到一个房间。如果您是房间发起人,则必须输入 -1。 如果你想连接两个 android 设备,那么你必须编译并安装 webRtcDemo apk。这个 apk 接口提供了输入另一个设备的 ip 地址的地方,反之亦然,然后两个设备将被连接。

请通过 -> http://www.webrtc.org/reference/getting-started

了解更多信息。我编译和安装的两个 apk 并检查了它是如何工作的。

我能够使用 webrtcdemo 在两个 android 设备之间成功进行通话。但我使用办公室网络的 WLAN 进行了测试。我没有进一步使用它,因为我正在使用 apprtcdemo 作为应用程序参考。我的建议是当你在webrtcdemo中输入remote ip时,只要检查loop-back是否被取消。我猜你 loop-back 已启用,所以你正在接收你自己的视频数据包,尽管你输入了远程 ip。确保在拨打电话时禁用 loop-back。

在这本书里可以找到很好的解释http://chimera.labs.oreilly.com/books/1230000000545/ch03.html#STUN_TURN_ICE 它提供了 WebRTC 如何使用 ICE 技术的基础知识。

特别假设STUN服务器的IP地址已知,WebRTC应用程序首先向STUN服务器发送绑定请求。 STUN 服务器回复一个响应,其中包含从 public 网络看到的客户端的 public IP 地址和端口。

现在应用程序发现了它的 public IP 和端口元组,可以通过 SDP 发送到其他对等点。 (请注意,SDP 是通过外部信令通道发送的,f.i。通过网络服务建立的 websocket)

有了这个机制,每当两个对等点想要通过 UDP 相互交谈时,他们就可以使用已建立的 public IP 和端口元组来交换数据。

不幸的是,在某些情况下,UDP 可能会被防火墙阻止。为了解决这个问题,每当 STUN 失败时,我们可以使用 Traversal Using Relays around NAT (TURN) 协议作为回退,它可以 运行 通过 UDP 并在其他所有方法都失败时切换到 TCP。

WebRTC 将 SDP Offer 提供给客户端 JS 应用程序以发送(无论 JS 应用程序需要)到其他设备,该设备使用它来生成 SDP 答案。

诀窍在于 SDP 包括 ICE 候选者(有效 "try to talk to me at this IP address and this port")。 ICE 致力于在防火墙中打开端口;尽管如果双方都是对称 NAT,则通常不可能,并且可以使用替代候选者(在 TURN 服务器上)。

一旦他们直接交谈(或通过 TURN,这实际上是 packet-mirror),他们可以打开 DTLS 连接并使用它来键入 SRTP-DTLS 媒体流,并发送基于 DTLS 的数据通道。

编辑: 这里的首字母缩略词:http://blog.1click.io/10-jargons-abbreviations-for-webrtc-fans/ for the rest, there is Google. Most of these are defined by the IETF (http://ietf.org/)

编辑 2: Firefox 和 Chrome(以及规范)已经转向使用 "trickle" 作为 ICE 候选者,因此 ICE 候选者通常添加 after-the-face 到 PeerConnection 并独立于初始 SDP 进行交换(尽管你可以等到最初的候选人准备好后再发送报价,然后将它们捆绑在一起)。 参见 https://webrtcglossary.com/trickle-ice/ and https://datatracker.ietf.org/doc/draft-ietf-ice-trickle/