首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > 多媒体 >

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

2012-04-11 
sip服务器和sip客户端之间是否传递RTP语音流?比如sip客户端c1和c2都注册到同一个sip服务器(c1,c2,sip服务

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映射地址和端口。

[解决办法]
关注学习

热点排行