嵌入式MPEG-2远程网络视频监控系统的实现
1 系统介绍
Vstar MPEG-2系列远程数字视频监控系统是一个基于TCP/IP网络的嵌入式远程图像监控系统,采用嵌入式设计方案,系统稳定性高,采用MPEG-2视频压缩技术,图像高清晰,画质可达DVD效果,能够实现单画面轮流监看和1~16个画面同屏监看,支持远程和本地云台控制,支持多任务工作方式,而且图像存储、监看、远程控制可同步进行,监控距离随网络延伸而不断加长。该系统分为远程现场、通信网络和监控服务三部分,结构图如图1所示。
远程现场部分和监控服务部分都安装了MPEG-2图像处理设备和有线网络接口设备,软件采用客户/服务器(client/server)结构,在远程现场的有线网络接口上运行的是服务器端软件,监控中心运行客户端软件。远程现场的软件在系统启动后要向监控中心注册,作为一个监控系统,必须有监控点的名称、监控点的特性描述的内容。监控中心在认证该监控点之前,为了避免与已经存在的监控点名称相同造成混淆,必须先检测网上是否已经存在名称相同的监控点,如果有,则会提醒用户更换名称。在通过权限认证后,客户端可以通过网络与服务器端建立TCP/IP连接,两端的通信包括图像数据和控制指令通信,客户端可以在权限允许范围内根据需要通过监控中心来调节服务器端的参数设置和工作方式,服务器端则向客户端发送经过编码处理后的MPEG-2视频码流。
客户端软件运行在监控中心的PC上,提供相应的用户控制接口。用户可以通过网络与服务器端建立不同类型的连接,从而获取不同的服务。服务器端软件运行在远程现场PC104上,它的功能比较丰富,包括硬件的驱动控制、通信线路管理、图像数据传输、系统控制、摄像头和云台调节等等。
2 系统硬件设计
硬件核心部分是MPEG-2视频处理设备的设计,图2中简单介绍了MPEG-2硬件视频压缩处理的结构。MPEG-2视频采集压缩模块以富士通MB86390芯片为核心,完成对标准视频信号(PAL或NTSC信号)的A/D转换、MPEG-2压缩以及与PC104主机之间的通信功能。图2中视频解码A/D从摄像头输入的模拟视频信号转化为数字视频信号,然后进行编码预处理,编码预处理是将接收的视频信号处理为规定的格式,即,把视频解码输出的CCIR601格式的信号转化为编码器可以处理的CIF或QCIF格式,然后再进行MPEG-2压缩编码。图中的SRAM用来作为编码所需的帧存和存储编码完成后的码流数据。PC104上的软件则通过总线接口单元来控制编码器的参数设置,及读取编码压缩后的码流数据。该模块包括以下功能单元:以SAA6252为核心的视频A/D单元,以MB86390为核心的MPEG-2视频压缩单元,以AT89C51与EPM7128(EPLD)为核心构成的控制逻辑和总线接口单元。总线接口单元是在EPLD中实现的,它是本模块与主机(PC104)进行交互的通道,可以和主机进行视频码流和控制数据的交换。控制逻辑是视频采集压缩模块的核心,它控制并协调各模块的工作,提供控制信号,通过EPLD编程实现系统各模块所需要的选通、缓冲、读/写使能,以及数据总线和地址总线的切换等等。
镜头云台控制是通过PC104主机的RS232口进行的,允许用户根据自己的要求调节系统。用户可以通过调节镜头的景深(zoom)、焦距(focus)以及光圈(iris)来调整图像质量,还可以通过云台的上下左右调节来获取不同角度的图像。由监控中心的Client端软件通过SOCKET网络接口,把调整信息发送给Server端,Server接收到控制指令后,进行指令识别,然后向对应的RS232口发送指令去控制云台,完成调整任务。
3 系统软件设计
传统的应用程序都是单线程的,即,在程序运行期间,由单个线程独占CPU的控制。在这种情况下,程序在执行一些比较费时的任务时,就无法及时响应用户的操作,影响了应用程序的实时性能。在监控系统,特别是远程监控系统中,应用程序往往不但要及时把监控对象的最新信息反馈给监视客户(通过图形显示),还要处理本地机与远程机之间的通信以及对控制对象的实时控制等任务,这时,仅仅由单个线程来完成所有任务,显然无法满足监控系统的实时性要求。为此,可引进多线程机制,主线程专门负责消息的响应,使程序能够响应命令和其他事件。辅助线程可以用于完成其他比较费时的工作,如通信、图形显示和后台打印等,这样就不至于影响主线程的运行。总之,把多线程机制引进通信,有利于提高应用程序的实时性,充分利用系统资源。对于大型的工程应用来说,不同的线程完成不同的任务,也有利于提高程序的模块化,便于维护和扩展。
软件采用了Client/Server结构,两端通过网络建立TCP/IP连接,按照自定义的数据通信协议交换数据,完成数据通信和系统控制的功能。监控中心的客户端向服务器端申请建立连接,服务器监听到连接请求之后,和客户端建立SOCKET连接,客户端向服务器发送控制信号,服务器端向客户端发送视频码流。 服务器端软件运行在PC104上,编码部分由于采用了硬件压缩,不占用PC104的系统资源,所以,合理设计PC104上运行的服务器软件结构,对于提高整个系统的工作效率有着重要的意义,系统性能也与之密切相关。软件设计的主要思想如下:读取线程,发送线程和控制线程之间的同步,防止有限资源的浪费。
在分析控制指令、码流读入、发送传输的处理过程中,可能会存在时间冗余。以读取码流为例,系统从EPLD的FIFO中读取视频数据,如果CPU读取的速度比编码器的速度快,可能会处于等待的编码器硬件响应状态。此时虽然CPU被占用,但实际上系统没有执行有效的任务,造成计算机系统资源的浪费,而嵌入式系统的资源本来就非常紧张。为了充分利用CPU计算能力,提高系统的整体性能,在该系统中采用多线程技术实现任务的调度。现以远程现场数据处理过程为例分析如下:
(1)读取线程:负责控制硬件,从编码器中读取图像数据到主机内存;
(2)发送线程:负责视频码流的传输;
(3)控制线程:负责云台、摄像头的控制以及编码器的参数设置。
视频传输中,在服务器端要求码流读取和发送互不干扰,避免读取和发送相互等待或相互冲突的情况出现,同样,在客户端解码和接收也存在这个关系。本设计采用了一种基于环形缓冲区的多线程视频传输技术,较好地解决了这个问题。主机的环形缓冲区除了达到数据分离互斥作用外,还可以起到平滑码流的作用。读取线程和发送线程是互斥关系,读入的视频数据供传输线程处理,这是一个简单的消费者和生产者的关系问题,只要不进入临界区,两个线程可以同时工作,用环形缓冲区和互斥锁完全可以解决这两个线程的同步问题。线程之间通过同步实现了CPU时间片的合理分配,以及硬件访问管理、内存缓冲区的访问管理等等,大大地提高了该系统的处理性能。
客户端提供用户的控制接口,用户通过它要求各种服务。用户可以连接到服务主机,按照自己的要求改变系统的工作方式和工作状态。最高权限可以调整服务器端的工作方式,修改系统的管理信息,获取所有不同类型的服务。
系统定义了自己的指令系统和指令传输协议。指令可以分为以下几类:工作控制(传输开始、传输停止、存储控制等),镜头云台控制(焦距、光圈、自动转动等),系统设置(用户管理、通信参数设置等)。每条指令前面都有其唯一的识别标志,服务器接收到后可以用来和其它指令进行区分。服务器的IP固定,主线程在启动时创建了与监控中心的Socket的连接,在指定的服务端口进行监听,当有用户要求连接时,为其创建指令通信线路连接,不同权限的用户对系统有不同的控制权。从而实现了监控中心对该系统的控制。
监控中心客户软件还支持图像的存储和回放。用户可以将实际监控中的图像存储在本地硬盘上,并按照不同的方式检索回放。
MPEG-2 相关文章:
- 数字音视频编解码技术标准AVS(08-19)
- 数字电视与数字电视编码技术的发展简介(08-19)
- IPTV洋标准暗藏高额专利费(08-29)
- 卫星数字电视制式DVB-S浅析(09-10)
- 数字电视技术(09-26)
- DVB-C视频传输接口ASI的实现(09-27)