• 休闲生活
  • 教育教学
  • 经济贸易
  • 政法军事
  • 人文社科
  • 农林牧渔
  • 信息科技
  • 建筑房产
  • 环境安全
  • 当前位置: 达达文档网 > 达达文库 > 人文社科 > 正文

    基于流媒体通信技术的视频监控设计

    时间:2020-09-14 07:55:33 来源:达达文档网 本文已影响 达达文档网手机站


    打开文本图片集

    【摘要】视频监控系统的应用软件能力上应支持多任务并发处理,如监视、录像、回访、备份、报警、控制、远程连接等的多任务处理能力;本课题主要是开发这样一个软件环境,使客户端完成现场图像接收,用户登录管理,优先权的分配,控制信号的协调,图像的实时监控,录像的存储、检索、回放、备份、恢复等。本文主要探讨了基于流媒体通信技术的视频监控设计。

    【关键词】视频监控;流媒体;通信技术

    一、研究的内容

    本系统采用流行的分布式C/S架构对系统进行设计,在基于微机平台的数字监控系统(DVR)的基础上添加网络监控功能,所有被采集的图像集中到中心的图像监控服务器统一存储和管理,系统采用MPEG-4对视频信号进行编译码,通过TCP/IP技术、RTP/RTCP实时传送视频监控流,使用者通过一个或多个图像监控客户端进行全面监控。

    视频监控系统的应用软件能力上应支持多任务并发处理,如监视、录像、回访、备份、报警、控制、远程连接等的多任务处理能力;本课题主要是开发这样一个软件环境,使客户端完成现场图像接收,用户登录管理,优先权的分配,控制信号的协调,图像的实时监控,录像的存储、检索、回放、备份、恢复等。本文具体工作如下:

    1、实现服务器端与客户端的数据通讯功能;

    2、将通讯模块获得的MPEG-4码进行解码;

    3、把解码器的输出结果显示到屏幕中某个窗口;

    4、实现对所有监控点进行远程硬盘录像存储且对某一时间、地点的录像资料可进行检索和回放;

    5、设置用户权限功能。

    二、视频监控系统设计方案

    1、数字视频监控系统框架设计

    按照C/S模式设计,视频监控系统分为服务端和客户端,服务端采集数据,经过处理后通过IP网络传输至客户端,客户端接收处理后进行播放。具体结构如图3.2所示。

    服务端分为视频采集预览、压缩编码和网络发送模块三部分,相应地,客户端分为网络接收模块、视频解码和视频播放三部分。各部分的具体功能如下:

    (1)视频采集预览:该模块对监控现场进行实时图像采集,并在服务端的PC机上实时预览。

    (2)压缩编码:采用H.264编码器,将实时视频图像压缩编码为H.264格式的比特流。

    (3)网络发送:该模块实现三个功能,首先采取RTP协议将上一级生成的比特流包装为RTP包,其次通过IP网络发送,同时通过RTCP协议实现网络QoS监控。

    (4)网络接收:该模块负责接收服务端发送的RTP包,解析包数据,并且与服务端的发送模块配合完成RTCP监控。

    (5)视频解码:采用H.264解码器,将上一级生成的比特流数据解码生成帧图像。

    (6)视频播放:在客户端的PC机上播放实时视频流。

    各个模块相互配合,完成端到端的实时视频流传输回放,视频数据发送和接收具体过程如下:服务端先启动,并一直处于监听状态,当客户端要请求数据时,它向服务端的IP地址和端口发出连接请求,服务端收到后,同意建立连接,则向客户端发送视频数据。

    在IP网络上的进行视频数据传送需要遵循一定的传输协议,由于视频实时传输本身的特点和要求,传统的网络协议如TCP、UDP等无法胜任此项工作,于是国际标准化组织IETF制定了面向实时流媒体的RTP协议,提供了上述打包分组功能,并且满足视频流实时传输的要求。因此一般的视频传输应用系统中,一般是基于RTP协议实现视频流的传输和控制,本文也采用该协议。

    2、数字视频监控系统的功能模型建立

    现场监控主机完成对监控硬件设备的操作,实现对视频数据回放和存储等功能。此外还可向远端的中心监控主机及其他的远程终端发送视频信息并验证该用户的权限。图3.3为现场监控主机功能模型。

    本文中使用视频服务器来代替现场监控主机,与现场监控主机一样,该视频服务器实现对音、视频数据压缩并把数据保存在内置的硬盘上,并可通过网络把数据传输到中心监控主机和视频监控主服务器上进行解码和显示。

    基于视频服务器的数字视频监控系统由以下几部分组成:

    (1)视频服务器

    视频服务器集视/音频压缩、报警开关输入/输出、网络传输于一体,完成监控系统中的数据采集、压缩和传输等工作。视频服务器的功能模型如图3.4所示。

    (2)中心监控主机

    中心监控土机是本地或者远端的分监控中心,是局域网中的监控主机,主要实现视频数据实时解压回放、视频图像处理、视频数据存储管理、实时报警处理和对摄像头的控制等,如图3.5所示:

    (3)监控主服务器

    监控主服务器是整个监控系统的总控中心,拥有最高的中心监控主机和现场视频服务器的访问权限。监控主服务器能对任意一路视频信号进行实时监控并能控制每个摄像头的动作。监控主服务器的主要功能与中心监控主机相同,但增加了与Internet连接的功能,可实现监控系统的Internet访问。监控主服务器的功能模型如图3.6所示。

    3、视频监控局域网

    整个监控系统可以通过专用视频传输网络及企业内部己存的局域网进行连接。具体网络结构会影响视频传输采用的传输协议,它取决于企业现有网络的状况。

    三、客户端设计

    1、数字视频监控系统视频播放器的实现

    (1)DirectShow软件开发相关技术

    ①COM编程基础

    DirectX采用了COM标准。而DirectShow是一套完全基于COM的应用系统。DirectShow应用程序实际上是一种COM组件的客户程序,只是COM组件的“使用”问题。这些问题包括如何创建COM组件、如何得到组件对象上的接口以及调用接口方法、如何管理组件对象(即需要熟悉COM的引用计数制)等。

    COM本身只是一种规范,而不是实现。但是当使用C++来实现时,COM组件就是一个C++类,而接口都是纯虚类。

    COM规范规定,任何组件或接口都必须从IUnknown接口中继承而来。IUnknown定义了三个重要函数,分别是QueryInterface、AddRef和Release。其中,QueryInterface负责组件对象上的接口查询,AddRef用于增加引用计数,Release用于减少引用计数。引用计数是COM中的一个非常重要的概念,它很好的解决了组件对象的生命周期问题,即COM组件到底什么时候被销毁,以及由谁来销毁的问题。

    除了IUnknown接口外,还有另外一个重要的接口,即IClassFactory。COM组件实际上是一个C++类,对于组件的外部使用者来说,这个类名一般不可知,那么如何创建这个类得实例?由谁来创建?COM规范规定,它实现了IClassFactory接口。在IClassFactory的接口函数CreateInstance中,才能使用new操作生成一个COM组件类对象实例。

    ②COM组件的实现方式

    客户程序和组件程序运行在同一进程空间中的组件程序称为进程内组件。客户程序与组件程序建立起通信关系后,客户程序得到的接口直接指向组件程序中的接口的vtable,客户代码可以直接调用组件的成员函数。动态连接库(DLL)是进程内组件的一种实现方式。组件程序的这种调用方式效率非常高,所以应用非常广泛。组件程序在调用时有白己的进程空间,客户程序和组件程序运行在不同的进程空间的程序称为进程外组件。在windows平台上,一般用EXE程序模块来实现进程外组件程序。客户程序和组件程序进程间的通信必须跨进程。在COM技术中客户程序与组件程序有两种方式通信方式,当组件程序和客户程序在同一机器上时采用本地过程调用,当组件程序和客户程序不在同一机器上时采用远程过程调用方法。进程外的组件运行效率比进程内组件效率要低,但跨进程的调用为客户程序带来安全性,组件程序的错误不会是客户程序崩溃。

    2、DirectShow应用程序开发步骤

    DirectShow是基于COM技术的多媒体开发结构体系,因此了解和掌握COM组件技术对理解DirectShow体系结构和掌握软件开发方法都着极其重要的意义。DirectShow应用程序开发又有其自身的特点和方法。典型的DirectShow应用程序开发通常遵循以下几个步骤:

    l、建一个Filter Graph Manager实例;

    2、利用Filter Graph Manager组建Filter Graph;

    3、应用程序对Filter Graph进行控制,响应事件通知。

    Filter Graph Manager是DirectShow的一个对象,可以通过CoCreatehistanee函数创建该对象的实例,利用该实例,我们可以构建和控制FilterGraph;并能对FilterGraph进行同步、事件通知处理等其它控制。图4.1为一个播放器的播放链路(Filter Graph)的构建:

    3、视频监控系统客户端播放器的实现

    客户端软件能实现视频、音频流的实时播放。客户端软件用Socket接收传过来的视/音频数据,放到VideoSource这个缓冲区里,然后通过解析函数,解析出视频流和音频流。视频流与音频流不同的地方在于帧的类型,我们就通过帧的类型的不同来判断是视频流还是音频流,若为视频流则进缓冲区,然后进一步处理,若为音频流则直接解码播放。

    视频的播放是客户端的重要功能。客户端软件在设计中采用了多线程编程方式,主要包括接收线程、解码线程、显示线程。客户端播放显示功能的实现可以用图4.2所示的流程图来表示:

    其中数据解压组件就是一个解码器它包含了三个组件:数据分离器(DataSplitter)、音频解码器(AudioDecomp)和视频解码器(VideoDecomp)。运用包容技术把它们组合到一起。图4.3是解码器(Decompressor)组件的数据流程图:

    4、数字视频监控系统客户端的实现

    数字视频监控系统客户端的实现原理:

    从DirectShow的角度来看,该程序的实现类似于图4.4和图4.5的Filter Graph:前者负责将本地采集到的音视频数据使用Socket传输给远程端;而后者使用Socket接收远程端发送过来的音视频数据,然后在本地播放。

    因为音视频数据是大量的、连续的、需要可靠传输的,因此这些数据的传输可以选用TCP协议。而通信双方的控制命令数据量很小,而且重要性也不是很强,因此可以选用UDP协议。为了让在Socket上传输的数据简单或者说提高Socket传输的效率,该程序将音频和视频数据的传输分离,分别为它们创建一条Socket连接。而在单个Socket上,可以同时进行数据的发送和接收。

    作为Filter开发的一条基本原则,Filter实现的功能应该力求单一。因此该程序将Socket相关的操作都放在应用程序层之上,而仅将完成连接的Socket句柄通过Filter的公共接口设置给Net Sender和Net Receiver。这两个Filter在内部实现时,只须使用外部设置进来的Socket进行数据的发送和接收就可以了,而不用去管Socket的创建、连接等一系列繁琐的交互过程。

    当通信双方的Socket连接建立起来以后,构建图4.4的Filter Graph是没有任何问题的。而此时构建图4.5的Filter Graph却不能完全成功(可以将Filter加入到Filter Graph中但不能完成连接),因为Net Receiver不知道将要接收到何种格式的数据。可是Net Sender知道(通过这个Filter与Capture Filter连接用的媒体类型可以知道)。于是,当构建图4.4所示的Filter Graph后,应该马上将它运行起来,然后在Net Sender接收到Capture Filter发送出来的第一个Sample时,首先将数据格式发送给远程端;远程端在接收到这个数据格式之后就可以重构一个DirectShow中使用的媒体类型,然后通知应用程序完成Filter之间的连接。此时,运行图4.5的Filter Graph就能播放远程端的音视频数据了。

    四、结论

    近几年,随着远程监控系统的广泛应用,本文设计了一个基于Web服务器的远程监控系统,首先介绍了联系网页操作和程序应用的CGI技术原理,并且用图表解释了Boa移植等概念。最后,配置和建立控制网页的完成了基于Web服务器的远程监控系统的设计。

    相关热词搜索: 流媒体 通信技术 视频监控 设计

    • 生活居家
    • 情感人生
    • 社会财经
    • 文化
    • 职场
    • 教育
    • 电脑上网