有关JRTP库的使用
视频会议
用JRTP库来传输视音频。
一个RTPSession可以向多个地址发送数据的
也就是说只用一个端口,发送数据与接收多路数据。
在局域网上,这样好像还可以,把对方的IP地址的加入到RTPSession就OK了
但如果在公网上呢
考虑到穿透NAT问题, 怎么样得对方IP地址呢
双方视频传输都是用RTPSession来传输的
所以要用RTPSession所用的(IP,Port)地址来互相穿透啊
但比如,某一方已经在视频会议中了。
那它们之间又是怎么用RTPSession所用的(IP,Port)地址来互相穿透呢??
另一种方法
有几路视频就用几个RTPSession
这样的话,比较好解决穿透NAT问题,一个RTP/RTCP就用了两个端口,
如果有n路视频就得开2*n端口了哦。
好像这样不好吧。
请教各位了,大家一起讨论讨论。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
在公网上架一个中转服务器,支持 symmetrical rtp ,原来SER项目中有这样一个模块,
优点:可靠,实现简单
缺点:需要提供一些资源“公网ip,服务器”
还有处理能力基本能够满足,据说每个服务器可以支持K级用户数
必须要借助于一个位于公网上的提供穿透信息的stun服务器才可以得到相干的地址端口信息
怎么获取对方的公网IP地址和端口??
可以用服务器转发而得到
但也要穿透啊
怎么办?
而对方公网IP地址和端口也就是对方RTPSession所用的公网IP地址和端口啊
怎么穿透??
目前比较有效和实用的方法是采用 STUN协议来获取对方真实的公网IP地址和端口。而且我发现大多说的穿透方案都是采用这种。比如RadVision公司的,有专门的STUN协议栈出售。当然网上也有开源的STUN实现。比如OpenH323协议栈里就包含。
对于JRTPLib应该不关心是否有NAT的问题,我找了它的源代码以及changlog,没有发现任何和穿透相关的(我对JRTPLib库不熟悉,如果有错)。它所关心的就是发送方的IP地址和端口。至于怎么获取对方真实的公网IP地址和端口,应该采用其它方法,比如我上面说的STUN协议。
为什么不行呢?只要能满足需求,就可以。只不过要考虑是否有这个必要?有没有更简单的方法。
不是很理解你这句用自己的socket去穿透 的意思?JRTPLib中RTP是承载在UDP上的,而UDP是无连接的,只要往对方的IP地址和端口发送就可以。
我认为归根结底的问题是怎么获取对方的公网IP地址和端口。只要获取了这个IP地址,然后把它填入RTPSession中,剩下的应该就是和局域网中的一样了。
这是我所认为的,如果有什么地方有错误,还请指出。
比如RTPSession已经在用了
还是有点难度的,
让多个socket可以邦定同一端口,比如让RTPSession和自已建立的一个socket
邦定同一端口,然后用自已建立的socket去穿透。
但是可能有这种情况的,
比如可穿透后,外网的往刚才已经穿透的端口发信息,会有可能只有自已建立的socket
收到信息。
是不是要先stun 穿透, 成功后才 RTPSession ?
穿透NAT和防火墙
这方面我也清楚
可能是我用这个库,不大好处理穿透NAT和防火墙吧。
如果你是做视频会议的,关于穿透NAT和防火墙可以看看这篇文章
P2Pnat Media
http://www.pacphone.com/p2pnat.html
怎么获取真实的IP地址,可以采用STUN协议。
[ 本帖最后由 matthew6868 于 2007-4-27 08:36 编辑 ]