本人正在读研,以前几乎没接触网络传输。看了很长时间的资料,看大家用的最多的就是live555和jrtplib了,但是这两个都是用C++写的,而我的采集和编码都是用C语言写的。至于ortp和gstreamer好像用的人不多。
------解决方案--------------------------------------------------------
服务器端使用live555、jrtplib,客户端建议如果是windows建议使用DITRECTSHOW,是LINUX建议使用GSTREAMER,至于解码使用ffmpeg就可以了我们再使用jrtplib传输rtp的数据的时候,在服务器端抓包,发现有数据乱序。而且客户端收到的画面都是从底部开始出现马赛克。所以怀疑是264的I帧在比较大的时候有丢包。
查看服务器缓冲区大小:
cat /proc/sys/net/core/wmen_max
缺省设置:110592
/proc/sys/net/core/wmem_max
该文件指定了发送套接字缓冲区大小的最大值(以字节为单位)。
修改大小:
方法1:
encho -n "512000" -> /proc/sys/net/core/wmem_max
sysctl -p /proc/sys/net/core/wmem_max
方法2:
root@grow235:/proc/sys/net/core# sysctl netcorewmem_max
netcorewmem_max = 512000
root@grow235:/proc/sys/net/core# sysctl netcorewmem_max=512100
netcorewmem_max = 512100
root@grow235:/proc/sys/net/core# sysctl netcorewmem_max
netcorewmem_max = 512100
root@grow235:/proc/sys/net/core#
参考地址:
>
很多人都用过rtp协议。
实时传输协议(Real-time Transport Protocol或简写RTP)是一个网络传输协议,它是由IETF的多媒体传输工作小组1996年在RFC 1889中公布的。
国际电信联盟ITU-T也发布了自己的RTP文档,作为H2250,但是后来当IETF发布了关于它的稳定的标准RFC后就被取消了。它作为因特网标准在RFC 3550(该文档的旧版本是RFC 1889)有详细说明。RFC 3551(STD 65,旧版本是RFC 1890)详细描述了使用最小控制的音频和视频会议。
组成:
RTP标准定义了两个子协议,RTP和RTCP。
数据传输协议RTP,用于实时传输数据。该协议提供的信息包括:时间戳(用于同步)、序列号(用于丢包和重排序检测)、以及负载格式(用于说明数据的编码格式)。
控制协议RTCP,用于QoS反馈和同步媒体流。相对于RTP来说,RTCP所占的带宽非常小,通常只有5%。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)