【问题标题】:Sip to WebRTC call啜饮到 WebRTC 通话
【发布时间】:2016-09-13 09:25:36
【问题描述】:
我正在实现从 android 应用程序到浏览器(Web 应用程序)的 voip。我使用基于 sip 的 linphone 作为 android 客户端和 SipML5 用于浏览器部分(webapp)。谁能解释我从 sip 调用时 voip 呼叫的流程是什么基于 linphone 到 Web 浏览器的客户端。sip 在其中的作用是什么以及 sip 和 webrtc 浏览器应用程序之间的媒体传输是如何发生的。还有,什么是 webRtc2sip 网关,请帮我解决这个困惑。
【问题讨论】:
标签:
android
webrtc
sip
voip
simplewebrtc
【解决方案1】:
调用流程如下所示:
SIP 客户端 -> [SIP/RTP] -> SIP 服务器 -> [SIP/RTP] -> WebRTC-SIP 网关 -> [WebSocket/DTLS/SRTP] -> WebRTC 客户端。
(或者从 WebRTC 到 SIP 的调用正好相反)
需要以下软件:
- sip 客户端:任何 SIP 端点(软电话或 IP 电话,例如您提到的 linphone)
- SIP 服务器:任何软交换或 PBX,例如Asterisk
- WebRTC-SIP 网关:这是一个最棘手的组件。您需要一个能够从简单的 SIP/RTP 转换为 WebRTC 和反向的软件,例如 mizu webrtc2sip 网关。 (我之所以提到这一点,是因为它具有内置的 SSL/WSS 支持和 TURN/STUN)
- WebRTC 客户端:通常在浏览器中运行,但也有本地解决方案。确保它符合 RFC 7118。您可以为此使用SipML5,但我建议您也检查SIP.js 和webphone,因为它们似乎得到了更好的维护。
确保使用 HTTPS 来托管您的 WebRTC 客户端,否则它将无法与 Chrome 一起使用(Chrome 仅允许来自 HTTPS 网站的 WebRTC,并且仅允许使用 wss websocket 连接到 WebRTC2SIP 网关。
【解决方案2】:
由于 WebRTC 需要 DTLS-RTP、RTCP-FB、ICE 和许多其他最新标准,但 VoIP 标准已有 10 多年的历史,因此您需要设置一个网关来转换信令和转码 RTP。