目前在研究jrtplib,主要是用来传输媒体数据,但是在传输过程中会出现偶尔的丢包情况,丢包率不是很大。
在同一台机子上进行传输和接受时,丢包的情况很少,但是在局域网上的两台机子上传输时,对媒体文件大于100MB以上的文件老出现少量的丢包情况,有些时候竟然只是丢0.1~0.2MB。我还故意把传输的速率调低了,但是还是避免不了丢包情况。本来是想到了用rtcp来进行传输控制信息的,但是我用的是现成的jrtplib库,有文档说该库是对rtcp进行自动的收发。因此我就对OnRTCPCompoundPacket函数进行了重载,以便实现rtcp包的接收,但是还是不能看到接收到的rtcp包。
数据丢包情况,我想到了两种解决方法,:
1、我是想用rtcp控制信息来进行传输速率和丢包情况的了解和控制,用来实现数据速率随网络拥塞情况自行进行速率的更改,再者是检测出丢失的数据包并对丢失的数据包进行重发。
因为是直接对媒体文件进行发送,只要丢了一个包都会阻止媒体的播放,也就是播放会一直停留在丢包的那个位置或者跳动到播放开头。用rtcp控制进行重发时,也会出现数据的插入位置的处理问题
2、实现编解码,对媒体文件进行编解码,把它转换成H264格式,在进行传输,这样的话可以忽略少量的丢包情况,也不会影响媒体的播放。
但是我对编解码还不是很了解,所以不知道怎么进行编解码算法的设计
我自己想到的两种方法,我实现起来还是有瓶颈,所以还是想请教请教下各位
这只是我个人思考情况,还不知道了解的是否正确
做为一名初学者,还请各位高手大侠指点迷津。
小女子在此谢过了