论文部分内容阅读
随着IP视频监控的普及,网络视频监控设备的应用也就越来越广泛,但现有的监控网络都呈现区域化、封闭化的特征,这使得各个厂家的硬件设备互联互通有了一定的阻碍。在这样的市场状况下,国内外不同的组织都意识到了网络视频监控标准化的意义,随之诞生了不同种类的协议标准,如电力行业、铁路行业、运营商行业,也有中国公安部发布的GB28181标准,还有国外组织的PSIA、ONIVF等。本课题就是在这样的市场背景下,设计并实现了支持《中国联通综合视频监控系统设备及客户端技术规范》和《ONVIF接口规范》两种协议的多通道媒体转发组件。组件基于linux平台,采用C++语言实现,按照模块化的设计思想,实现了接入设备管理、登陆与心跳检测、信令服务、媒体会话管理、RTP数据接收等五个功能模块。在模块内采用面向对象的设计方法,针对设备管理、登陆、信令等抽象出pu对象类、登陆类、服务类等抽象类,各个协议分别实现协议的实现类,使整个系统具备了可扩展性。各功能模块在实现了支持网通和ONVIF协议设备管理的同时,也可以扩展新的协议设备。在网通协议和ONVIF协议中,进一步研究了其媒体会话管理协议:SIP及RTSP协议,实现出支持两种协议的会话管理模块。模块底层采用reactor模型实现,由其事件驱动整个SIP及RTSP协议握手过程的完成;在会话的关闭环节,设计了延时删除流程,保证了在数据处理任务和会话关闭任务并发场景下的安全销毁。在媒体数据传输方面,本文针对RTP规范的数据格式进行了分析。通过采用半同步/半异步的IO复用框架,实现了在高频数据业务场景下的多路并发能力。另一方面,通过动态调整socket低水位标记实现的动态缓冲区,在降低了在大流量业务下对CPU的消耗的同时,也保证了流媒体的实时性要求。经过理论分析和实际测试结果表明,在高流量业务场景下多通道转发组件能完成多路数的并发接收,相比较于开源软件Live555,系统CPU消耗下降了55%,为NVR类产品的竞争力提供了重要的支持。