基于嵌入式Linux视频的网络监控系统设计详解

基于嵌入式Linux视频的网络监控系统设计详解,第1张

随着计算机技术及网络技术的迅猛发展,公安、安防行业的发展趋势必然是全面数字化、网络化。传统的模拟闭路电视有很多局限性:传输距离有限、无法联网,而且模拟视频信号数据的存储会耗费大量的存储介质(如录像带),查询取证时十分烦琐。

基于个人计算机的视频终端功能较强,但稳定性不好,视频前端(如电压耦合元件等视频信号的采集、压缩、通讯)较为复杂,可靠性不高。基于嵌入式视频的网络不需要用于处理模拟视频信号的个人计算机,而是把视频服务器内置一个嵌入式Web服务器,采用嵌入式实时多任务 *** 作系统。

由于把视频压缩和Web功能集中到一个体积很小的设备内,可以直接连入局域网,即插即看,省掉复杂的,安装方便(仅需设置一个IP地址),用户也无需安装任何硬件设备,仅用浏览器即可观看。

基于嵌入式的视频网络监控系统将嵌入式系统连接上Web,即视频服务器内置一个嵌入式Web服务器,摄像机传送来的视频信号数字化后由高效压缩芯片压缩,通过内部总线传送到内置的Web服务器上。

1、系统总体框架

嵌入式Linux视频网络监控系统是电工电子装置、计算机软硬件以及网络、通信等多方面的有机组合体,它以智能化、网络化、交互性为特征,结构比较复杂。假如利用OSI七层模型的内容和形式,把相应的数据采集控制模块硬件和应用软件以及应用环境等有机组合,可以形成一个统一的系统总体框架。

摄像机传送来的视频信号数字化后,经过压缩,通过/将数据送到内置的Web服务器,嵌入式LJnux系统的10/以太网口实现接入网络,将现场信号送到客户端。整个系统的核心是嵌入式Linux系统。监控系统启动后,嵌入式Linux系统启动Web 服务程序,接收授权客户端浏览器的请求,Web 将根据通信协议完成相应的监测。

2、系统实现

2.1 硬件平台设计

本系统以公开的嵌入式Linux源代码为基础,根据设计的嵌入式目标板编写相应的Bootloader程序,然后裁剪出合适的内核和文件系统。目标平台CPU采用公司生产的ColdFire嵌入式处理器MFC5272。MFC5272采用ColdFire V2可变长处理器核心和DigltalIDNA技术,在时钟下能够达到63Dlnrystone2.1MIPS的优良处理能力。

内部SIM( IntegratedModule)单元集成了丰富的通用模块,只需很少的外围芯片就可以实现两个串行口和一个USB Slave接口。MFC5272还内嵌一个FEC(快速以太网控制器),片外扩展一片LXT97l,方便地实现了一个100/10 BaseT的以太网接口。能够与常用的外围设备(如、收发器)实现无缝连接,从而简化了外围电路的设计,降低了产品成本、体积和功耗。

2.2 软件设计与实现

软件结构采用的是浏览器,服务器(B/S)网络模型,即由客户端通过Web向服务器提出请求,服务器对请求做出确认响应并执行相应的任务(如向客户端发送组播地址、图像格式、压缩格式等),建立连接后就可以在客户端监控被控点,从而实现远程网络监控。服务器(Web Servei)端即现场监控点的软件结构包括采集模块、压缩编码模块、网络通信模块、控制模块等。

2.2.1 视频采集模块设计

由于摄像机得到的是模拟的视频信号,不能直接为计算机使用,因此要使视频在网上传输,必须首先对其数字化。本系统选用的视频采集卡为公司的Bt848卡,该卡不需要任何本地缓存来存储视频像素数据,还能够充分利用基于PCI总线系统的高带宽和固有的多媒体功能,并且能够与多媒体设备实现互 *** 作。

在整个系统中由于视频采集的速度通常高于应用软件取得数据并进行处理的速度,因此为了保证视频数据的连续性,采用了三缓存结构,缓存A是Bt848视频采集的目标地址,在指令的直接控制下,采集的数据都先存放在这个缓存中;B和C组成乒乓式结构循环往复使用,当某一帧数据采集完毕后,产生中断,在中断服务程序中将缓存A的数据复制到缓存B(或C)中,然后采集下一帧,当下一帧数据采集完后.再将缓存A中的数据复制到缓存C(或B)中,当应用程序需要数据时就从缓存B或C中读取最新的一帧图像。缓存B和C交替使用,能够保证应用程序从缓存读数据的 *** 作和驱动程序向缓存写数据的 *** 作不会发生冲突,避免了数据的损坏和迟延。

2.2.2 视频压缩编码的设计

本设计选用了基于对象的视频编码技术,首先对输入的任意外形的VOP序列,用基于块的混合编码技术编码。处理顺序是先帧内VOP,后帧间VOP和双向猜测VOP。

在对VOP的外形信息编码之后,取得任意外形VOP的采样,每个VOP用宏块栅格划分成不相交的宏块,每个宏块含有四个8×8的像素块,以进行运动估计和补偿及纹理编码。已编码的VOP帧保存在VOP帧存储器中。运动向量在当前VOP帧和已编码VOP帧之间计算。对将被编码的块或宏块,计算其运动补偿猜测误差。运动补偿猜测后的I-VOP及误差用8×8块DCT编码,并进行DCP系数的量化,然后是行程编码和熵编码。

最后,外形、运动和纹理信息复合成VOL位流输出。这种编码方法可以答应用户修改、增加或重定位一个视频场景中的对象,甚至可以转换场景中对象的行为。对于不同的带宽和计算复杂性需求,不必针对每种情况分别编码,可以使用同一个视频位流,而采用不同的参数以选择不同的层以获得灵活性。在出现网络拥塞、丢包等现象时仍能提供连贯性较好的视频图像。视频压缩编码进程将编码后的的视频存放到已编码视频缓冲队列中,同时激活或等待直播进程和存储治理进程的相应处理。

2.2.3 网络通信模块设计

网络通信模块是系统的主体部分,它包含三个数据通道:监听通道、控制通道和视频数据通道。监听通道用来传输控制前端设备的命令数据;视频数据通道用来传输各个组的视频数据。三个通道采用不同的通信端口,所以各个通道传输数据彼此独立。网络通信模块设计开发是通过网络编程接口(Windows ,简称Winsoek)来实现的。按照系统浏览器,服务器的阿络传输模型。在服务器端建立了以为类型的监听套接字、控制套接字;在客户端建立了类型的请求套接字、控制套接字,这些都是采用ICP协议封装传输数据的。 ARM开发论坛

另外,在服务器和客户机两端都用到了一个组播类(CMuhieast),它是专门为视频传输而封装的类。由CObject派生而来,其中定义了以类型的收发视频数据的套接宇和组套接字,从而实现了用组播通信方式来传输UDP协议封装的视频数据包。系统中IP网络数据通信流程如图3所示。

下面给出在服务器端建立监听套接字和控制套接字的程序。

int ret="O"

BOOL bFlag="TRUE"://设置套接字为可重用端口地址

ret=setsoekopt(IInfo.listen,SOL_SOCKET,SO_REUSE

ADDR,()*&bFlag,sizeof(bFlag));

SOCKADDR_IN sockAddr;

*addr=severaddr.GetBuffer(0); //定义监听套接字 字串4

sockAddr.sin_family=AF_INET;

sockAddr.sin_addr.S_un.S_addr = inet_addr(addr);

sockAddr.sin_=htons()

if((IInfo.1istenSoeket,(LPSOCKADDR)

2.2.4 控制模块设计开发

控制模块实现了用户对前端设备如、和画面切换的控制。服务器在接收到由客户中心监控终端发送过来的控制信息帧后,对其进行判定解析,并送入各个相应的控制部件接口,以实现相应的控制。

3、实验结果

将的web服务器连接到局域网,然后接入Intemet,给web服务器分配一个IP地址。在用户终端,由于使用普通的浏览器只能显示单画面,很不方便,使用微软公司的VC6.0配合微软的浏览器控件,只需几分钟就可完成一个多画面的浏览器软件。在浏览器的地址栏中直接输入视频服务器的地址,即可在浏览器页面中播放远程实时稳定、流畅的图像,取得了良好的监控效果。

基于嵌入式Linux视频的网络监控系统的Web服务器直接连入网络,没有长度和信号衰减的限制,同时网络是没有距离概念的,彻底抛弃了地域的概念,扩展了布控区域。又由于视频压缩和Web功能集中到一个体积很小的设备内,直接连入局域网或广域网,即插即看,系统的实时性、稳定性、可靠性大大提高,无需专人治理,非常适合于无人值守的环境。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2715899.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-17
下一篇 2022-08-17

发表评论

登录后才能评论

评论列表(0条)

保存