使用 Web 套接字的 SIP 通信(Web RTC)
SIP communication with Web socket (Web RTC)
Sip(会话启动协议)不理解 websocket,所以我们需要 sip 代理,它基本上是 sip 和 websocket 之间的翻译器。
我正在遵循此架构与网络套接字进行 sip 握手。我有几个问题
必须使用哪个sip代理才能进行音频和视频通话。在 SIP 模块的网关中,我使用的是 ASTERISK。星号如何用于视频通话 是否有任何编解码器可用于视频通话?请分享一些有用的链接。
非常感谢您的回答。
- 这只是一种方法。方法很多。
- 你必须区分信令路径和媒体路径
- 在信令路径上,您必须选择信令协议和相应的传输协议。就信令而言,浏览器可以使用 web socket 进行传输,使用 sip 作为协议。在传统 SIP 端,您需要 SID over UDP,需要更改信令传输,而不是信令协议。
- 在媒体路径上,您有两个问题,加密和编解码器。加密在 webrtc 中是强制性的,而不是在 SIP 中。您需要一个 B2BUA 来在两个词之间进行转换。
- 在编解码器方面,您要么选择两个词之间重叠的编解码器,要么必须转码。此处似乎必须使用媒体服务器。如果会议中有多方,您将需要混合音频并合成视频以将其发送到旧版 SIP,在这种情况下,您的媒体服务器应该是 MCU。
- 最终,您还有一个发现和身份问题。在最初的握手过程中,SIP 需要用户 ID 和域(可以是 DNS 条目或固定 IP),而 webRTC 使用 ICE。同样,您很可能需要使用 B2BUA 来桥接这两个世界。
Asterisk/kamailio/freeswitch 可能会处理上述大部分简单情况(1 对 1,音频)。对于任何复杂的事情,你都是一个人。您可能想看看 respoke.io,它是由 asterisk 背后的公司 digium 制作的。
查看 http://jssip.net。他们提供了一个 javascript API ,它使用 SIP over WebSocket 作为客户端,他们还有一个 SIP 代理和服务器(也适用于 Asterisk,Kamailio)。他们是 RFC7118 "The WebSocket Protocol as a Transport for the Session Initiation Protocol (SIP)" 的作者。
Sip(会话启动协议)不理解 websocket,所以我们需要 sip 代理,它基本上是 sip 和 websocket 之间的翻译器。
我正在遵循此架构与网络套接字进行 sip 握手。我有几个问题 必须使用哪个sip代理才能进行音频和视频通话。在 SIP 模块的网关中,我使用的是 ASTERISK。星号如何用于视频通话 是否有任何编解码器可用于视频通话?请分享一些有用的链接。 非常感谢您的回答。
- 这只是一种方法。方法很多。
- 你必须区分信令路径和媒体路径
- 在信令路径上,您必须选择信令协议和相应的传输协议。就信令而言,浏览器可以使用 web socket 进行传输,使用 sip 作为协议。在传统 SIP 端,您需要 SID over UDP,需要更改信令传输,而不是信令协议。
- 在媒体路径上,您有两个问题,加密和编解码器。加密在 webrtc 中是强制性的,而不是在 SIP 中。您需要一个 B2BUA 来在两个词之间进行转换。
- 在编解码器方面,您要么选择两个词之间重叠的编解码器,要么必须转码。此处似乎必须使用媒体服务器。如果会议中有多方,您将需要混合音频并合成视频以将其发送到旧版 SIP,在这种情况下,您的媒体服务器应该是 MCU。
- 最终,您还有一个发现和身份问题。在最初的握手过程中,SIP 需要用户 ID 和域(可以是 DNS 条目或固定 IP),而 webRTC 使用 ICE。同样,您很可能需要使用 B2BUA 来桥接这两个世界。
Asterisk/kamailio/freeswitch 可能会处理上述大部分简单情况(1 对 1,音频)。对于任何复杂的事情,你都是一个人。您可能想看看 respoke.io,它是由 asterisk 背后的公司 digium 制作的。
查看 http://jssip.net。他们提供了一个 javascript API ,它使用 SIP over WebSocket 作为客户端,他们还有一个 SIP 代理和服务器(也适用于 Asterisk,Kamailio)。他们是 RFC7118 "The WebSocket Protocol as a Transport for the Session Initiation Protocol (SIP)" 的作者。