基于B/S模式的嵌入式视频监控系统的设计

发布者:SparklingMoon最新更新时间:2010-05-07 关键字:嵌入式  视频监控  B/S模式  S3C2440  Linux 手机看文章 扫描二维码
随时随地手机看文章

      视频监控系统将被监控现场的实时图像和数据等信息准确、清晰、快速地传送到监控中心服务器,监控中心将实时、直接地掌握各个被监控现场的当前情况(包括图像、声音及其他敏感数据),从而对敏感事件进行快速反应[1]。视频监控正朝着数字化、网络化、集成化的嵌入式视频监控方向蓬勃发展。相比传统的视频采集监控系统,嵌入式视频监控系统具有可靠性高、组网方便、可远程监控等优点,因而更适用于工业控制、银行、政府部门的安防系统中[2]。

  本文设计了一种具有用户零维护、价格低廉、性能稳定等特点的嵌入式视频监控系统。该系统以ARM处理器S3C2440和嵌入式Linux操作系统为核心平台,通过USB摄像头采集视频数据,基于TCP/IP协议进行网络传输,用户通过浏览器即可监控远程视频,视频可以保存,以便回放。

1 视频监控系统方案设计

  1.1 监控系统硬件平台设计

  监控系统硬件平台是整个监控系统的基础,在系统设计中占有至关重要的地位,硬件选择的成功与否直接决定着系统功能的优劣。本设计中主要硬件有NAND FLASH、嵌入式处理器S3C2440、SDRAM、网卡、USB接口摄像头等。

      视频监控系统的硬件结构方案如图1所示。系统以S3C2440处理器为核心,外扩其他外围设备。S3C2440处理器是SAMSUNG公司基于ARM公司的ARM920T处理器核,它是一款高度集成的芯片,主频为400 MHz,提供了一套较完整的通用外围设备接口,支持性价比非常高的NAND FLASH启动,可支持Linux等多种操作系统的移植[3]。

      1.2 监控系统软件方案设计

  本系统选择Linux操作系统作为软件开发平台,编译环境采用交叉编译调试的方式,嵌入式Linux的内核选用2.6.13,根文件系统采用yaffs。

  一套完整的视频监控系统应该至少包含视频数据的采集、处理、传输、存储与控制等功能,为了很好地实现以上功能,本系统划分为三大功能模块:嵌入式流媒体服务器、嵌入式Web服务器和用户视频监控端。嵌入式流媒体服务器模块主要实现视频数据的采集、存储和传输等功能;嵌入式Web服务器模块负责处理监控端发来的请求并通过与浏览器的交互为用户提供监控平台;用户视频监控端模块实现对远程视频的实时监控,并且可以控制视频的亮度和对比度等。

2 嵌入式流媒体服务器的实现

  流媒体服务器模块的主要功能有视频采集、视频压缩、视频存储和视频传输。本系统采用中星微公司生产的ZC0301芯片的USB摄像头,ZC0301主要由五大功能模块组成,即系统控制、图像信号处理、次取样和水平扫描模块、JPEG编码器和USB设备控制[4]。采用该芯片的摄像头应用最广泛,方便购买和维护,经过此芯片处理后得到的是JPEG编码的位流,实现了视频的压缩。

  2.1 基于Video4Linux的视频采集

 [page] 

      Video4Linux(简称“V4L”)是Linux中关于视频设备的内核驱动,它是针对视频设备的应用程序编程提供的一系统接口函数。视频采集的基本流程如图2所示。利用V4L对USB摄像头的编程需要用到Linux下2个系统调用,分别是ioctl()调用和mmap()调用。

      在V4L标准中提供了多个数据结构和控制命令, 程序通过调用函数对设备进行控制, 完成视频采集的任务。ioctl()函数中主要的设备控制命令有:

  (1)VIDIOCGCAP:获取采集设备基本信息,比如支持最大最小分辨率等;

  (2)VIDIOCSPICT、VIDIOCGPICT:分别为设置和获取采集图像的各种属性;

  (3)VIDIOCGMBUF:获取缓冲区信息,比如每帧大小、最多支持的帧数等;

  (4)VIDIOCMCAPTURE:捕捉图像,获取图像信息;

  (5)VIDIOCSYNC:等待采集一帧图像完毕。

  应用程序获取摄像头采集的图像数据有两种方法,分别是read()(直接读取的方法)和mmap()(内存映射的方法)。mmap()系统调用使得进程之间通过映射同一个文件而实现内存共享,优点是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝,加速了I/O访问,本系统就采用此方法。

  [page]

      2.2 基于TCP/IP协议的视频传输

  TCP/IP协议指的是Internet上使用的两种网络协议,即传输控制协议和网际协议。TCP协议是一个可靠的点到点之间的协议,IP协议是一个传输层的协议。TCP/IP协议族可以将各种操作系统和网络部件连接起来,它提供了一种在各种系统间移动数据的标准方法[5]。

  本系统中,首先服务器通过socket函数创建套接字,并使用bind函数将套接字与某端口进行绑定;然后调用listen函数,服务器将处于*状态,等待用户监控端请求连接指定端口;当接收到用户监控端的连接请求后,服务器调用accept函数来建立与用户监控端间的通信;在成功建立通信后,就可以通过read函数或write函数进行通信。

  本系统可以人机交互,用户通过网页可以向视频服务器传递控制信息,比如调节帧速、亮度等。当建立连接后,首先用户监控端发送一个包含控制信息的client_t结构体数据给视频服务器;然后视频服务器根据控制信息采集一帧视频数据,并生成一个包含这一帧视频信息的frame_t结构体数据,把它们发送给用户监控端。这就完成了一次人机交互,这样不断地循环,就实现了数据传输。

3 嵌入式Web服务器的实现

  3.1 嵌入式Web服务器的选择

  Linux下嵌入式Web服务器主要有3个,分别是httpd、thttpd和Boa。httpd是最简单的一个Web服务器,它的功能最弱,不支持认证,不支持CGI。thttpd和Boa都支持认证和CGI等,功能都比较全。本系统采用Boa Web服务器,它通过建立HTTP请求列表来处理多路HTTP连接请求,节省了系统资源,这对嵌入式系统来说至关重要。同时它还具有自动生成目录、自动解压文件等功能。Boa具有很高的HTTP请求处理速度和效率,在嵌入式系统中具有很高的应用价值。

  3.2 Boa在ARM上的移植与配置

  (1)移植过程

  从http://www.boa.org/下载Boa源码,选择boa-0.94.13.tar.gz,输入解压命令“tar xzvf boa-0.94.13.tar.gz”;进入解压生成的源码目录下的src子目录,输入命令“./configure”,生成Makefile文件;修改Makefile文件,将CC和CPP的值改成交叉编译器安装的路径;输入命令“make”即可交叉编译生成可执行文件Boa,通过串口下载到根文件系统下的/ bin下就实现了移植。

  (2)配置

  在/etc目录下新建一个Boa目录,里面存放Boa的主要配置文件boa.conf,在Boa源码目录下已有一个示例boa.conf,可以在其基础上进行修改;修改Group nogroup为Group root,修改User nobody为User root,这里的root是开发板存在的组和用户;修改#ServerName www.your.org.here为ServerName cs2440;修改DocumentRoot /var/www为DocumentRoot /www,设置HTML文档的主目录/www,其他采用默认设置即可。此外,还需要将mime.types文件复制到/etc目录下,通常可以从Linux主机的/etc目录下直接复制即可。

4 基于B/S模式的用户视频监控端实现

  系统采用B/S模式,相比C/S模式,用户不需要做任何维护,这对用户人力、物力、时间、费用的节省是显而易见的,并且可以跨平台操作,真正方便了用户。

  系统通过开发Java Applet应用程序,并嵌入网页中,网页名称设为Boa Web服务器默认主页名,把它们保存在/www中,用户在浏览器地址栏中输入视频服务器的IP地址,就能在网页里显示摄像头的监控图像。通过Java Applet与视频服务器进行交互,实现对视频数据的控制、传输和播放。Java Applet程序中主要功能步骤和主要函数可描述为:

 [page] 

      (1)创建套接字、输入流和输出流。

  connection=new Socket(m_strServer,port);

  in=connection.getInputStream();

  ut=connection.getOutputStream();

  IP地址及端口都是由嵌入在HTML中部分的参数传入的,并创建此Socket对象的输入流和输出流。

  (2)分配接收缓冲区:byte[]buffer=new byte[512*1024];

  (3)发送一个用户控制信息。它由用户用鼠标点击图标而生成。当用户点击浏览器中的视频窗口时,在上方会显示亮度等图标,通过点击图标两侧的“+”和“-”而写入控制信息;当点击图标以外的地方,图标就会消失,实现全窗口的视频,便于监控,操作简单。

  Public void mouse(MouseEvent evt) {…};

  out.write(b);//b是包含控制信息的字符数组名

  (4)读取一帧图像头信息,确认图像数据的正确性和获取图像数据的大小。

  n=in.read(buffer,0,HDRLEN);//HDRLEN为图像信息头长度,设置为50 B

  对头信息中包含的约定字符进行判断,若正确就可以继续接收图像数据,不正确则返回(3)。

  (5)读取图像数据,把头信息后的图像数据写入缓冲区,以供播放显示。

  r=in.read(buffer,HDRLEN,buffer.length-HDRLEN);

  (6)实现图像显示。由于缓冲区中包含图像头信息,为单独使用图像数据,需把图像数据拷贝到另一缓冲区buffer2中。

  BufferedImage image=    ImageIO.read(new ByteArrayInputStream(buffer2));

  ImageIcon ii=new ImageIcon(image);

  m_label.setIcon(ii);//显示图像

  通过以上(3)到(6)的不断循环运行,用户从监控网页上可以看到连续动态的图像,效果很好,画面流畅,不存在明显的延时,实现了视频监控。

  本文提出的这种基于B/S的嵌入式视频监控系统相比传统C/S模式,真正实现了用户零维护,可以跨平台监控,方便用户。采用嵌入式处理器和Linux操作系统相结合,很好地体现了本监控系统具有集成化、网络化、功耗低等优点,可广泛扩展应用在工业控制、可视电话、交通管理等诸多领域。

关键字:嵌入式  视频监控  B/S模式  S3C2440  Linux 引用地址:基于B/S模式的嵌入式视频监控系统的设计

上一篇:H.264-DVR的核心技术
下一篇:SoPC技术在图像采集和处理系统中的应用设计

推荐阅读最新更新时间:2024-03-16 10:52

S3C2440Linux,LCD驱动
到了神秘的LCD驱动了,信息还真有点胆怯,但是还是不得不走下去。对刚刚学习的linux驱动坐一下总结,毕竟是Linux内核当中的东东,而且是那么的繁琐。做一总结,等用笔记把学过东西几下来,这样就不会忘了。哈哈! 那就开始!!! 在编写裸机LCD程序的时候,首先就是硬件初始化操作。有一个寄存器当中存放了帧缓冲的起始地址。这个参数是非常重要的。当配置好硬件后,帧缓冲中的数据能够脱离CPU不停地将真缓冲当中的数据写入到LCD屏。如果我们要现实一个图片的话只需要将图片数据放到帧缓冲当中,这样就非常的方便了。 在linux当中,把整个LCD驱动分为两层:LCD帧缓冲区层和LCD硬件驱动层。LCD帧缓冲区层其实就是将内核中的一部分空间当作一个
[单片机]
嵌入式系统的虚拟仪器成测试系统新思路
  1引言   计算机及其接口技术的发展和传统测试测量仪器系统暴露出来的不足,使得基于计算机的虚拟仪器设备越来越成为测试测量仪器的主导。虚拟仪器系统以其平台通用性、可扩充、易升级和高度的智能性获得了广泛的工业应用。在PC和工业控制计算机中插入基于PC总线(ISA,PCI)的数采板卡构成硬件系统,编写 Windows系统平台的驱动程序和软面板实现软件功能,成为业界的主要解决方案。   但是在野战和恶劣环境下测试任务的实践过程中,我们发现基于PC或工控机的虚拟仪器暴露出很多问题,如:体积大,不便于携行;插卡式结构,接触易松动、不紧固;以机械硬盘为主要存储介质,抗震性能差等等。   以32位嵌入式微处理器和嵌入式操作系统为特
[嵌入式]
Flash损耗均衡的嵌入式文件系统设计
  本文基于AVR单片机扩展 Flash存储器 和以太网控制器设计了一款嵌入式文件系统,实现数据存储和存储器使用的损耗均衡,为延长Flash存储器的使用寿命提供研究方法。   1 硬件平台设计   本嵌入式文件系统选用Atmel公司的AVR单片机ATmega 128和Flash存储器AT45D13081。该Flash芯片具有8 Mb存储空间,共分为4096数据页,每页可存储264字节。通过串行外围设备接口SPI实现ATmega 128和AT45DB081之间的数据通信。文件系统的硬件结构如图1所示。其中,RTL8019AS是一种全双工即插即用的以太网控制器。      2 嵌入式文件系统总体设计   文件系统
[单片机]
Flash损耗均衡的<font color='red'>嵌入式</font>文件系统设计
联想:今年超过36款平台将提供Linux支持
近日在科索沃召开的 DebConf22 大会上,负责联想 Linux 相关计划的马克·皮尔逊(Mark Pearson)从个人角度出发,谈公司在过去几年所获得的升级,以及在 2022 年其平台对 Linux 的支持进度。 联想的 Linux 工程师在过去一年时间里面临着多项挑战,包括面板刷新问题、WiFi更改、英特尔网络驱动问题、AMD 功耗问题、NVIDIA 对能源认证的驱动问题,以及供应链短缺问题等等。不过,好消息是通过和 OEM 硬件供应商建立更紧密的合作关系从而增加对 Linux 的支持和兼容度。 近期围绕着新款联想系统的问题是由于禁用了第三方 UEFI CA 认证,因此无法默认启动到 Linux 系统。它是由Mi
[嵌入式]
嵌入式控制器在电力监控及交通安全应用
  在电力监控与交通安全方案中的应用   设计者和厂商都希望嵌入式控制器能够为电力监控与交通管理系统提供新的通用功能,包括满足用电计量、汽车监控、数据搜集和传感器调节等方面的要求。当今嵌入式控制器种类与型号已不少,而基于混合信号的嵌入式控制器作为实现这些系统功能的监控,是一种实现节能的新型有效技术。   主要技术规范   如今,一类新的嵌入式控制器已经出现,它们能在同一硅片上整合高性能数据采集子系统,具有近似DSP功能及RSIC-CPU核,从而简化了外部模拟接口。图1示意了现代嵌入式控制器(MAXQ系列)的整合能力,并与传统微控制器作了比较。   MAXQ系列嵌入式控制器是这种新一代c的代表,除了通常的UART(通用异步接
[单片机]
<font color='red'>嵌入式</font>控制器在电力监控及交通安全应用
上海汽车利用Simulink开发的嵌入式控制系统
中国北京– 2012 年 7 月 25 日 – MathWorks今日宣布上海汽车借助Simulink、Stateflow和Embedded Coder,使用基于模型的设计成功开发了荣威 750 混合动力轿车的混合动力控制器 (HCU)。该设计方法使上海汽车能够对 HCU 进行建模、仿真、验证并自动生成产品级代码,在内部完成开发所需的时间较最初预期降低 25%。 通过 Simulink 和Stateflow使用基于模型的设计,上海汽车的工程师们能够对HCU的控制算法进行建模,并且通过运行多个仿真来评估不同的动力总成系统配置以比较各种配置对燃油经济性和驾驶性能的影响,从而优化 HCU 的控制算法。由于整车和多个关键部件(包括电池和
[汽车电子]
这些年,嵌入式处理器厂商也是蛮拼的,盘点马年十大亮点
从诞生至今,MCU、MPU等嵌入式处理器一直围绕着性能、能效、尺寸、连接性、安全、开发难度等主要参数进行改进,近些年我们发现很多通用处理器厂商又反过来做专用处理器,这个 轮回 也显得很有意思。其实主要是因为不同行业需求大相径庭,为了抢单,这种 专用型 通用嵌入式处理器就孕育而生了。 在IHS 2014年12月公布的半导体公司20强中,把通用MCU\MPU\SoC作为重心的公司占了不少份额,如德州仪器、意法半导体、瑞萨、NXP、飞思卡尔。随着竞争加剧,半导体公司也是蛮拼的,想方设法改进嵌入式处理器的各种参数,并实现差异化,EEWORLD在马年尾声为您盘点嵌入式处理器的亮点,包括 最任性的MCU、领跑的ARM处理器、安全
[单片机]
这些年,<font color='red'>嵌入式</font>处理器厂商也是蛮拼的,盘点马年十大亮点
把网络引进嵌入式控制系统----微型单板计算机加软件可显著减少联网控制系统的复杂性
    OEM厂商把强大的网络功能引进到嵌入式应用系统中。现在,自动装配线的监控人员可以坐在台式计算机前面,通过Web浏览器,监控和调整总装线上的每一个设备部件;医生则可以通过Web浏览器把一系列上网诊断设备的数据调集在一起,进行综合分析。     许多OEM厂家对产品上网有些顾虑,怕拖延产品上市时间、怕需要一笔可观的起动资金、怕会有长远的维修费用。Bright Start Engineering公司率先实现了一项既简单、价格又不贵的上网技术。这就是集软硬件和必要的开发环境于一身的垂直式网络引擎,我们叫ipEngine。     对于多种控制应用系统,ipEngine可以作为控制器使用。ipEngi
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
最新安防电子文章
更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 视频监控 智能卡 防盗报警 智能管理 处理器 传感器 其他技术 综合资讯 安防论坛

词云: 1 2 3 4 5 6 7 8 9 10

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved