现在我正在制作webrtc信号服务器,使用SIP。 我有很大的问题。如何从远程SIP客户端获取流和ICE候选者。?
,调用getusermedia - > peerconnection - > createoffer - >接收流
和webrtc客户端发送会话描述(SDP)给信号服务器发送信号。
信号服务器创建SIP邀请消息,使用webrtc客户端会话描述(SDP)
信号服务器与SIP客户端(如jitsi)进行SIP消息通信
webrtc客户端需要接收ICE候选者和STREAM。怎么弄?
我可以从远程SDP消息中提取ICE候选和流吗?
答案 0 :(得分:2)
SDP是SIP和WebRTC使用的自己的协议。您可以在SDP交换中发送大量信息。
SIP绝对可以通过SDP发送连接信息。你必须确保连接信息在SIP方面是合理的(让它与STUN / TURN服务器协商),一旦它具有良好的信息,你可以简单地用该信息编写SDP并发送它。 / p>
对于媒体,您必须处理双方之间的DTLS-SRTP密钥交换过程,以便双方对SRTP媒体进行加密/解密(两者都有主密钥)。
双方都有Master-Key,您的连接信息(ips / ports)和媒体经过协商(相同的编解码器),然后您可以简单地流式传输通过ips /端口达成一致的编解码器经过谈判。
您可以创建自己的Ice Trickling并创建Ice候选对象,因为您的SIP客户端与ICE服务器进行通信并将其简单地发送到另一方但是在尝试协商之前等待所有ICE协商完成之前可能更容易一些连接本身。您必须弄清楚SIP方面的协商何时完成,但RTCPeerConnection为此already提供了信号。
您可能需要查看sipML5。你必须做一些与他们正在做的事情类似的事情,才能使所有这些活动部件都有效。
TL; DR说明:
编辑:有网关宣称它已经可以做到这一点。 Janus-Gateway也可能是一个很好的资源,可以看到你如何做到这一点。 SIP插件似乎能够与SIP设备通信。恕我直言这个源代码比SIPML5的
更容易理解