一种无线视频监控系统及方法与流程

文档序号:15924787发布日期:2018-11-14 01:01阅读:179来源:国知局

本发明属于视频监控领域,特别涉及一种基于c/s架构的嵌入式无线视频监控系统及方法。

背景技术

视频监控系统自其诞生之日起已经经过了二十多年,近年来,随着社会的快速发展,交通、运输、公安、仓储、物流等社会民生的各方面对实时监控系统的需求量渐大,对监控系统的稳定性和监控图像的清晰度的要求日趋严格。嵌入式视频监控以其实时性好、查看方便、清晰度高等优点能满足对现场监控的细节要求。随着视频技术,通信技术、计算机技术、图像处理技术、嵌入式技术等相关技术的快速发展,在视频监控领域出现了基于嵌入式处理器的视频监控技术。

随着带宽的不断增加,网络化使视频监控不再受地域限制,更大范围的部署将会变得易于实现。由于ip监视设备的集成化程度极高,单一设备通常可以完成以往需要多个模块配合完成的一切工作,这种集所有功能于一体的设备对于在不改变现有网络的基础上新增监视点非常方便。同时ip设备能够连接网络的性能也使得使用者能够在任何有网络覆盖的地方方便地监视目标现场,为使用者带来了前所未有的便利。在视频监控与移动互联网相互渗透的趋势之下,视频监控由传统向网络化的发展将是大势所趋。便携、小巧和灵活的设备将引领今后视频监控行业发展的潮流。但是现有技术中尚无一种小巧灵活的无线视频监控系统。



技术实现要素:

本发明所解决的技术问题在于提供一种经济,响应速度快,简单便捷的视频监控系统。

实现本发明目的的技术解决方案为:一种无线视频监控系统,包括整合服务器的嵌入式主控芯片、flash存储器、sdram存储器、usb摄像头、无线网卡、路由器和客户端,所述usb摄像头与整合服务器的嵌入式主控芯片相连,将采集到的视频信息传输给嵌入式主控芯片,flash存储器和sdram存储器与嵌入式主控芯片相连,flash存储器和sdram存储器对嵌入式主控芯片接收到的数据进行存储,嵌入式主控芯片通过无线网卡经wifi连接到路由器,并最终和客户端相连接,与客户端进行信息交互。

本发明与现有技术相比,其显著优点为:1)本发明的无线视频监控系统采用简单的系统结构,成本低;2)本发明的无线视频监控系统中移动终端与服务器选择无线连接的方式,安装方便,无需布线;3)本发明的无线视频监控系统采用c/s架构,高效快捷;4)本发明的无线视频监控系统采用无线网络连接,可远程实时监控。有良好的人机交互体验;5)本发明的无线视频监控系统可移植性好;6)本发明公开了一种基于c/s架构的嵌入式无线视频监控系统;采用基于嵌入式linux和arm处理器的服务器和远程客户端;由于本系统采用无线wifi连接,所以在安装和可移植性方面具有很好的优势。

下面结合附图对本发明作进一步详细描述。

附图说明

图1本发明视频监控系统结构图。

图2为视频采集流程图。

图3为jpeg解压流程图。

图4为主线程流程图。

图中编号所代表的含义为:1为整合服务器的嵌入式主控芯片,2为flash存储器,3为sdram存储器,4为usb摄像头,5为无线网卡,6为路由器,7为客户端。

具体实施方式

结合附图,本发明的一种无线视频监控系统,包括整合服务器的嵌入式主控芯片1、flash存储器2、sdram存储器3、usb摄像头4、无线网卡5、路由器6和客户端7,所述usb摄像头4与整合服务器的嵌入式主控芯片1相连,将采集到的视频信息传输给嵌入式主控芯片1,flash存储器2和sdram存储器3与嵌入式主控芯片1相连,flash存储器2和sdram存储器3对嵌入式主控芯片1接收到的数据进行存储,嵌入式主控芯片1通过无线网卡5经wifi连接到路由器6,并最终和客户端7相连接,与客户端7进行信息交互。

所述整合服务器的嵌入式主控芯片1采用s2c2440作为微处理器,该处理器装载适用于arm的linux系统。

所述flash存储器2采用256m的nandflash;所述sdram存储器3采用64m的sdram。

所述usb摄像头4通过嵌入式主控芯片1提供的接口连接到整合服务器的嵌入式主控芯片1。

所述无线网卡5采用dm9000网卡芯片;所述路由器6实现wifi的连接;所述客户端7为pc或者手机设备。

所述整合服务器的嵌入式主控芯片1和客户端7构成整体的c/s系统架构。

一种基于上述系统的数据采集方法,包括以下步骤:

第一步、打开摄像头设备,linux系统里采用open函数直接打开摄像头;

第二步、获取摄像头设备的信息;具体通过调用ioctl函数时传vidioc_querycap实参来获取硬件所具有的性质,之后获取到的信息会记录在tv4l2cap数据部分中;

第三步、设置图像采集格式,对第二步中获得摄像头设备信息修正后,再次调用ioctl函数就完成对摄像头的属性设置;

第四步、申请缓冲空间;在打开camera设置完其支持的图像格式之后,在底层驱动空间申请视频存储区,来存储从camera获取的视频流;

第五步、映射缓冲空间,把在linux底层驱动申请的图像存储区域通过mmap方式与上层存储区域一一映射;

第六步、把帧缓冲全部入队列,把linux底层驱动申请的图像存储区域通过mmap方式与上层存储区域一一映射之后,在启动摄像头采集图像数据之前,通过ioctl函数把映射好的上层存储区域放入图像采集输入行列;

第七步、启动摄像头设备;

第八步、把帧缓冲取出队列,在启动摄像头后,从输出行列中拷贝获取到的图像数据;

第九步、把帧缓冲放入队列,当应用程序把采集到的视频数据取走时,把该空的图像映射区域再次投放入起始的队列;

第十步、停止视频的采集,当不再需要获取视频数据时,关闭设备。

本发明的无线视频监控系统采用简单的系统结构,成本低。

下面结合附图1-4对本发明做进一步详细的说明:

1.无线视频监控系统的整体架构

考虑到c/s模式的智能移动终端拥有很快的响应速度,并且拥有能够非常方便接入无线网络的优势,因此,本系统的设计决定采用c/s架构来完成。

如图1所示,系统主要由搭载了linux的视频采集前端和内置android的移动终端组成。视频采集前端的任务主要是利用v4l2技术实现usb摄像头视频流的获取,利用jpeg编码算法实现视频流的压缩,之后再利用socket网络编程技术把处理后的数据经过wifi传送出去。智能移动终端的任务主要是利用apache提供的httpclient技术实现数据的接收。具体包括以下设备:整合服务器的嵌入式主控芯片(1)、flash存储器(2)、sdram存储器(3)、usb摄像头(4)、无线网卡(5)、路由器(6)和客户端(7)。

为了能够使监控系统应用在个人和家庭环境中,便携性和灵活性是本设计考虑的重点,在完成嵌入式系统定制、系统外设驱动程序设计和无线局域网搭建之后,设计的难点在于视频采集前端应用软件和智能移动终端应用软件的开发。

设备应用软件实现归纳起来分为如下几部分:

1)设备驱动模块。视频采集前端的一些外围硬件,包括camera,wifi网卡等,在linux内核中只有在完成对应硬件驱动的开发之后,硬件才可以被使用,本模块主要完成硬件驱动程序的设计;

2)图像采集模块。视频采集前端在获取现场画面时,前端设备将会利用linux内核中标准的v4l2应用程序接口来完成现场画面数据的采集;

3)图像压缩模块。视频采集前端在获取现场画面的原始数据后,并不能直接通过wifi网络发送出去,由于图像数据比较大,wifi网络本身的带宽有限,为了达到满意的效果,务必要将初始视频流压缩,本模块主要完成视频流的压缩;

4)图像传输模块。把jpeg编码后的视频流利用socket网络编程技术经过wifi网络传送出去;

5)移动终端显示模块。本模块完成视频码流的接收并利用bitmapfactory技术解压缩图像数据,之后通过手机ui界面显示。

2.无线网络的选择

wifi作为高传输速率的无线技术,其最大的优势体现在:

a)经济性,在有线接入网设计中,考虑到未来的发展,使用wifi设计可以很好地避免因后期终端数量增加而带来的网络重新建设问题。它无需重新布线,因此具有非常好的经济性;

b)易用性,用户使用支持无线局域网功能的移动终端设备即可接入互联网当中。此外,wifi具有非常高的通信带宽,数据传输最高能够达到600mbit/s,能够很好地满足图像数据传输的要求,因此,本设计使用wifi无线网络。

3.视频采集模块的实现

v4l2图像采集流程如图2所示。

在v4l2图像采集流程中最主要的是帧缓冲管理,帧缓冲管理一般由单个或者多个输入行列和输出行列构成。调用v4l2接口进行图形数据获取时,底层硬件会先把获得的第一帧数据放入到最开始输入行列,之后底层硬件会把该帧视频数据传送至输出行列以备上层系统调用接口来访问。紧接着v4l2设备底层硬件会把取得的第二帧图形数据投进下一个输入行列,同样之后该帧视频数据被移送到另一个输出行列,就这样驱动程序不停地循环采集视频数据,上层系统调用接口不断的于输出行列里取得图形数据,在对移出的图形数据加工后,把空的存储区域再放入输入行列。

本设计图像采集模块的实现用mmap()方式,关键步骤如下:

第一步:打开摄像头设备。linux里外设是经过与设备通信的接口文件来操作,用open函数直接操作此摄像头。

第二步:获取摄像头设备的信息。在操作此硬件设备前需要判断一下该设备是否为标准的视频捕捉设备以及支持何种视频格式,具体可以通过在调用ioctl函数时传vidioc_querycap实参来获取硬件所具有的性质,之后获取到的信息会记录在tv4l2cap数据部分中,供之后程序做判断使用。

第三步:设置图像采集格式。对第二步中获得摄像头设备信息修正后,再次调用ioctl函数就可以对摄像头的属性进行设置。

第四步:申请缓冲空间。在打开camera设置完其支持的图像格式之后,就可以在底层驱动空间申请一块视频存储区,来存储从camera获取的视频流。

第五步:映射缓冲空间。为了提高设备处理视频数据的性能,有必要把在linux底层驱动申请的图像存储区域通过mmap方式与上层存储区域一一映射,这样将linux底层驱动申请到的图像存储区域地址与上层存储区域地址一一映射后,使得应用程序仅仅需要对上层存储区域地址访问而不用再从linux底层驱动申请的图像存储区域读取图形数据。

第六步:把帧缓冲全部入队列。把linux底层驱动申请的图像存储区域通过mmap方式与上层存储区域一一映射之后,在启动摄像头采集图像数据之前,需要通过ioctl函数把映射好的上层存储区域放入图像采集输入行列。

第七步:启动摄像头设备。在上面所有的准备工作就绪后,就可以开启摄像头进行图像数据的采集。

第八步:把帧缓冲取出队列。在启动摄像头后,用户程序就可以从输出行列中拷贝获取到的图像数据。

第九步:把帧缓冲放入队列。当应用程序把采集到的视频数据取走时,需要把该空的图像映射区域再次投放入起始的队列,达到轮回采集的效果。

第十步:停止视频的采集。当不再需要获取视频数据时,应及时的关闭设备,这样才能释放申请的资源。

4.视频解码模块的实现

为了提高视频的传送速率,有必要对camera获取到的原始图像码流进行编码处理。由于本设计采用的ip2977芯片具有视频数据的硬编码功能,不需要再经过软件程序来做压缩工作,因此极大地减少了cpu的运行负荷。但要想对采集回来的数据在framebuffer设备中实时显示,就需要对图像数据进行解压缩。本发明具体的解码过程是利用libjpeg库完成的,如图3所示。

5.无线传输模块的实现

视频采集前端与客户显示终端设备之间视频数据的发送与接收是以tcp的方式通过linux下的socket网络编程实现。视频采集前端作为视频采集和传输服务器,显示终端设备作为客户端在启动阶段与服务器建立连接。

视频采集前端向显示终端传输视频数据的编程实现主要分如下四个步骤:

1)创建套接字socket

在linux操作系统中,前端与终端在将要建立连接时必须用socket()函数创建各自的socket对象m。此函数如果执行成功,将成功创建一个socket文件对象,此时,该socket对象没有绑定任何ip信息,还不能进行通信。

2)绑定套接字到ip与端口

使用socket创建的文件对象没有任何约束,在服务器端必须用bind函数使其与具体的端口号相关联。此函数将指定socket与对应网络地址(含有ip和端口信息)绑定。

3)监听客户端的请求

绑定了ip及端口信息的socket对象还不能进行tcp方式的通信,因为当前还没有能力监听网络请求。因此,对于面向连接的应用来说,视频采集端需要调用listen函数来监听显示终端的网络请求,此后,显示终端就可以向视频采集端发送连接请求了。

4)接收客户端请求

在对网络实施监听后,需要调用accept函数来对将要接入的终端响应处理,否则,此函数将处于阻塞状态。

处于监听情形的图像采集前端在监听到移动终端的访问请求后,会将其暂时放在在请求队列中。当图像采集前端空闲时,accept函数会将其从等待队列中取出,为其创建新的文件描述符,新生成的用于和当前建立连接的移动终端进行通信,从而使得之前的能够继续对网络进行监听,这样的好处是,视频采集前端可以同时对多个显示终端的请求进行响应。

5)网络数据的收发

生成的socket对象是一种类似文件的接口,所以能够运用内核中提供的i/o流标准库中read函数来接收socket通讯信息,write函数来发送socket写入信息。

6)关闭socket对象

在通信结束后,需要关闭socket对象。

6.视频采集和视频传输的同步

如图4所示,主线程先对camera做一些准备化的工作,接着开启一个单独的线程来专门管理视频获取的工作,之后再开启一个单独的线程来专门管理视频的传送工作,最后主线程就会处于睡眠情形,直到被外部事件打断。

为了完成图像采集和传送的工作,线程间会发生一些信息的交换。由于图像获取线程与图像传送线程共同占有同一块数据区域,为了保护共享数据的完整性,在视频采集线程与视频传输线程中对共享资源操作的情况采用了双缓冲,以保证图像获取工作与图像传送工作能够保持一致。采用双缓冲虽然在一定程度上消耗了内存空间,但却使得视频采集线程与视频传输线程能够各自独立运行,极大地提高了视频数据的处理能力。

在mmap函数把采集到的图像数据映射到用户空间时,就要使用互斥量操作来确保在任何特定时刻仅有一个线程能够访问该空间的数据。每次只让一个线程访问该空间的数据必须是互斥进行,也就是当处于公共区的资源被占用时,另一个访问的线程会被阻塞,直到该线程退出该区域,另外的线程才允许对公共内存区操作。

本发明的基于c/s架构的嵌入式无线视频监控系统采用基于嵌入式linux和arm处理器的服务器和远程客户端;由于本系统采用无线wifi连接,所以在安装和可移植性方面具有很好的优势。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1