杭州高端网站开发,wordpress发布地址,成都网站建设 全美,中华商标交易网官方网站在博客《EasyIPCamera高性能摄像机RTSP服务器RTSPServer解决方案》我介绍了基于live555实现的一套RTSPServer功能组件#xff0c;当时开发者经过几个月的调试#xff0c;已经将底层的性能调试到了一个业界非常优秀的程度#xff0c;主要优化的几点#xff1a; 发送优化调度… 在博客《EasyIPCamera高性能摄像机RTSP服务器RTSPServer解决方案》我介绍了基于live555实现的一套RTSPServer功能组件当时开发者经过几个月的调试已经将底层的性能调试到了一个业界非常优秀的程度主要优化的几点 发送优化调度优化发送优化方面主要就是调整live555的缓冲区大小和每次发送的数据大小众所周知流媒体发送的是各种大小的音视频数据而这些数据大的几百k小的就几个字节如果每一个零散的数据都要走一遍发送循环对于live555这种单线程的架构来说性能吃紧所以我们做了几点调整
// 加大发送Packet大小
MultiFramedRTPSink.cpp
47行:setPacketSizes(1000, 8192);RTPInterface.cpp129行:
increaseSendBufferTo(envir(), fGS-socketNum(), 512*1024);//数据累积发送不再单独发送
//注释掉332行修改为以下:
//if (!sendDataOverTCP(socketNum, framingHeader, 4, False)) break;
//if (!sendDataOverTCP(socketNum, packet, packetSize, True)) break;struct iovec iov[2];iov[0].iov_base framingHeader;iov[0].iov_len 4;iov[1].iov_base packet;iov[1].iov_len packetSize;writev(socketNum, iov, 2); 在调度方面的优化
402 行
//当前的数据缓冲区如果没有发送完成就继续发送不再走一遍live555的eventloop流程提高效率#if 0// We have more frames left to send. Figure out when the next frame// is due to start playing, then make sure that we wait this long before// sending the next packet.struct timeval timeNow;gettimeofday(timeNow, NULL);int secsDiff fNextSendTime.tv_sec - timeNow.tv_sec;int64_t uSecondsToGo secsDiff*1000000 (fNextSendTime.tv_usec - timeNow.tv_usec);if (uSecondsToGo 0 || secsDiff 0) { // sanity check: Make sure that the time-to-delay is non-negative:uSecondsToGo 0;}if (uSecondsToGo 0)printf(uSecondsToGo: %d\n, uSecondsToGo);// Delay this amount of time:nextTask() envir().taskScheduler().scheduleDelayedTask(uSecondsToGo, (TaskFunc*)sendNext, this);
#elsesendNext(this);
#endif 这样几点修改大大提升了live555在网络数据发送方面的性能使得在海思3516A这样的板子上高清视频能提升到4路4M高清视频的发送且很稳定当然网络一定要保证大部分走wifi的测试都到不了这个效果 关于EasyIPCamera EasyIPCamera是一套非常稳定、易用、支持多种平台包括Windows/Linux 3264AndroidARM hisiv100/hisiv200/hisiv400等平台的RTSP Server组件适用于IPCamera、内网RTSP服务等小型RTSP流媒体服务器接口调用非常简单成熟无需关注RTSPServer中关于客户端监听接入、音视频多路复用、RTSP具体流程、RTP打包与发送等相关问题支持多种音视频格式再也不用像调用live555 RTSPServer那样处理整个RTSP OPTIONS/DESCRIBE/SETUP/PLAY/RTP/RTCP的复杂流程和担心内存释放的问题了 获取更多信息 邮件supporteasydarwin.org WEBwww.EasyDarwin.org Copyright © EasyDarwin.org 2012-2017 转载于:https://www.cnblogs.com/babosa/p/7518010.html