专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 多媒体/流媒体开发

sip服务器和sip客户端之间是否传递RTP语音流?该怎么解决

发布时间:2011-06-27 19:27:51 文章来源:www.iduyao.cn 采编人员:星星草
sip服务器和sip客户端之间是否传递RTP语音流?
比如sip客户端c1和c2都注册到同一个sip服务器(c1,c2,sip服务器处于同一个局域网中)
或者在其它不同的场景下(比如c1和c2分别处于不同的nat后, sip服务器位于公网上)

当c1呼叫c2成功后,c1和c2之间开始互发RTP语音流,这样,双方就可以互相听见对方的声音了

那么sip服务器和sip客户端之间是否传递RTP语音流?即服务器是否转发c1和c2之间通信
的语音数据?


------解决方案--------------------
一般来说简单的两个人之间的通话不需要。

一开始可能需要一个STUN服务器来穿透NAT。穿透之后,两端之间可以直接发送语音数据。
如果很难穿透的NAT,那可能中间需要一个有公网IP的 relay服务器 来转发语音。

如果是一些特殊类型的通话,比如多方会话,可能会用一个中央的媒体服务器,那通话语音就会通过媒体服务器转发。。。当然也有其他实现方式



- 千里孤行






------解决方案--------------------
发表于:2009-03-09 12:28:292楼 得分:0 

我前几天做了一个实验,在同一个局域网内:linux server端用Yate2服务器, windows客户端用了两个软电话 
两个软电话注册到Yate2服务器上进行通话实验,并且进行了抓包 

抓包发现两个客户端之间的通话RTP数据流通过了服务器进行转发,这个是怎么回事呢? 

按照sip协议的 Contact字段,按说两个客户端已经分别知道了对方的ip:port,那为什么两者之间的通话语音流 
还要通过服务器转发呢??


--------------------------

Contact字段是客户端的ip:port(5060),用于接收sip消息,该字段可能被sip server修改为客户端外面的nat的映射地址和端口。

语音流比如RTP的接收地址端口,由sip里面的SDP确定,如果需要通过rtp proxy转发,那么sip server就会修改sdp里面的connection ip和audio port或video port
------解决方案--------------------
[Quote=引用:]

兄弟,我可是在同一个局域网里测验的啊,为啥客户端都把RTP流发往服务器端,再由服务器端转发呢?? 

---------------------------------------
RTP要不要中转,就看sip server是如何处理了。

1.如果sip server修改了sip里的SDP的地址和端口,那就要中转。你看你的cfg配置文件里是不是使用了use_media_proxy().

2.sip server不修改SDP,就不中转。此时SDP里面是客户端的内网的IP和端口(一般默认是7078),如果客户端通过stun方式,那SDP里面的IP就是客户端的外网的NAT映射地址和端口。

------解决方案--------------------
关注学习
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: