慧聪网首页 > 音响灯光行业 > 技术文章 > 多媒体视听
视频监控系统设计与实现(三)
 
慧聪网   2005年3月16日10时59分   信息来源:北京邮电大学    

    4. 组播传输的实现

    Windows环境下组播通信是基于Windows Socket。服务器发送IP组播数据报时,使用sendto函数,发送地址必须是D类IP地址,在客户端,要接收数据报,首先要加入组播群组。

    在本系统中,服务器将视频数据按组播地址发送出去,并且可以同时进行视频存储,以便以后查询,客户端有选择性地加入一个或多个组播组,接收视频数据并播放出来,以达到远程监控的目的。服务器端首先将实时采集到的数据存放在缓冲区中,当缓冲区满时,立即启动与之对应的发送线程,将数据发送到相应的组播地址,然后清空缓冲区,等待下接收下一批数据。路由器通过Internet的组管理协议IGMP来管理组中的成员,在IGMP2.0中增加了对成员离开的及时响应功能,当组中没有成员时,可以及时停止该组的组播,减小了网络负担,但是由于发送方在向组发送数据的时候并不需要加入组,所以即使已经没有组成员在接收数据,也只是路由器不再进行转发,发送方并没有停止发送,会影响系统的性能。因此在系统中为发送方建立监听套接字,来监视某个组的成员的加入、离开情况,与此同时,当客户端加入某个组时也同时创建一个连接套接字连接相应的监听套接字来保持和监听套接字的联系,当组中的成员数量不为0时,继续发送,若为0,则停止发送线程。本系统采用CSocket类的OnConnect()和OnClose()来响应客户端的连接和离开,采用组播发送管理线程中对状态标志bFlag值的判断来决定是否启动、结束发送线程,以提高系统的效率。

    OnConnect()

    {

    iClientNum++;

    bFlag = true;

    }

    5. 多线程的通信与同步

    Windows是多任务处理系统,线程的应用大大减少了程序运行的开销,线程间存在一定逻辑关系或要访问相同资源就需要实现线程间的通信与同步,如果两个以上线程同时访问同一缓冲区,就可能产生读写数据错误问题,所以必须通过一定的机制来达到线程处理中的读写同步。Windows提供了灵活的线程通信与同步方案,包括利用全局变量、用户自定义消息、事件对象、临界区和信号量等。为了提高系统运行效率,使得各个功能模块之间能够并行工作,本系统在软件设计中采用了多线程编程方式,其中服务器端软件主要包含主线程、数据采集、压缩、传输、报警及云台控制6个线程,客户端软件主要包括主线程、接收、解压缩以及控制命令发送4个线程。同时系统利用MFC中Event对象和一些全局变量来实现线程间的通信,利用MFC中的信号量(Semaphore)来保证线程间的同步,并且根据各个线程占用CPU的时间来设置线程优先级,这样就较好地解决了线程间通信与同步及程序效率问题。

    四 结束语

    本文给出了远程网络监控系统的总体结构,对系统中用到的主要技术进行了说明,并对系统中视频采集、编码、压缩、传输等主要模块进行了详细的讨论,较好地完成了远程网络监控系统的设计与开发,实现了一套完整的远程监控系统。

 

 
作者:李 虎(研究生) 林 中(教授) 
 
 
评论    【推荐】 【打印】 【论坛
 
 
[热门关键词]:视频 多线程 组播 
特别推荐: 
·如何去分辨真假多声道音箱(图) ·防伪常识:真真假假话数字音响
更多精彩:
·KTV风潮 ——引领现代时尚生活 ·零距离全接触 会议系统 (组图)
 我来评两句〖查看最新评论〗 
请您注意:
·遵守中华人民共和国的各项有关法律法规
·承担一切因您的行为而导致的法律责任
·本网留言板管理人员有权删除其管辖留言内容
·您在本网的留言,本网有权在网站内转载或引用
·参与本留言即表明您已经阅读并接受上述条款
昵称:匿名
 
分类广告  
产品超市
·紧急求购舞台幕布
·求购WHARFEDALE音箱
·紧急求购吊杆、手动幕
·求购扩声功放
·供应美国BIEMA专业音..
·供应专业音箱FP212AII
·供应BIEMA金典声色有..
热点专题
专业灯光“集中营”
公共广播 集锦
调音台专区
麦克风、话筒专区
佛山公信 让世界认识你
专 业 功 放 大百科
细数 十大监听音箱
行业书店