基于H.264的远程数字视频监控系统

2015-05-04 20:20王中权王昊王新蓓
数字技术与应用 2014年12期
关键词:视频信号开发板驱动程序

王中权++王昊++王新蓓

摘要:在日新月异的现代社会,人们对自身以及周边环境的安全也越来越重视,这时视频监控以其方便、直观、丰富的信息内容而被广泛的应用于各类场所。本文以Linux操作系统和S3C6410开发板为平台,采用USB视频摄像头,并进行bootloader、kernel、根文件系统、H.264视频编码库的配置及移植。实现了在PC机服务器监控终端上进行实时监控和存储图片。实验结果表明,该视频监控系统稳定,采集图像清晰。

关键词:视频监控 Linux H.264

中图分类号:TP391 文献标识码:A 文章编号:1007-9416(2014)12-0005-01

1 硬件系统结构

系统硬件包括了ARM微处理器和外围硬件设备,在本次设计中我们选择了三星公司的tiny6410处理器的ARM11系列的S3C6410芯片作为整个视频监控系统的核心硬件。摄像头选择了中星微的301vUSB摄像头。SDRAM芯片和FLASH芯片是ARM中的主要存储设备,其中前者为系统运行和临时数据提供存储空间,后者中存储系统运行所需要的代码、内核以及应用程序等。

2 软件系统结构

系统软件采用了先进的B/S软件架构,按照模块化的设计方法对整个系统功能进行了设计,不同模块之间利用接口函数进行数据信息的调用。B/S架构是在C/S架构的基础上进行设计的。由于系统中视频信号的压缩采用了H.264算法,它具备较高的信号编码效率,对网络传输系统的码流结构具有较强的适应性,同时增加了数据信息的差错恢复能力,在视频信号网络传输中取得了较好的应用效果。视频数据传输采用了RTP/RTCP协议和组播的方式,既保证了数据信息的实时传送,又保证了视频数据信息的传输质量。在工作过程中,服务端首先对USB摄像头进行初始化操作,然后由摄像头完成对视频信息的采集,通过H.264编码程序对获得的视频信号进行编码处理,并且将编码后的视频数据压缩成RTP流,通过网络传送到客户端。客户端接收到RTP流后,先对其进行解码处理,然后利用相应的播放器对其进行回放操作。

2.1 Bootloader的移植

本次系统开发过程中采用了U-Boot-1.1.6,开发人员将事先编译好的映像文件由JTAG口存放到Linux系统的开发板中,然后点击开发板上的复位键,就完成了对Linux系统的Bootlaoder移植。

2.2 Linux内核的移植

在Linux系统的源文件common-smdk.c中,找到smdk_default_nand_part语句,对其进行分区操作。然后开发人员可以使用make zImage命令对内核进行相应的编译,在系统源代码的根文件目录下生成相应的映像文件,最后利用串口将生成的映像文件链接到S3C6140的FLASH中,即完成了对Linux的移植。

2.3 根文件系统的建立

首先进行BusyBox的编译处理,它是Linux系统开发过程中常用的一个工具软件,内存空间较小,主要存放Linux系统中的bin目录、sbin目录、usr目录和相应的Linuxrc文件。在系统开发时,可以在系统的硬件平台中对其源代码进行配置,即将busybox-1.13.0进行解压缩后,将其Makefile文件进行相应的修改。然后对其进行相应的配置,并且将配置好的文件,以.config的名字进行保存。第三进行BusyBox的编译和安装,这是系统代码中就有增加一个_install目录,将其进行编译就完成根文件系统的创建。

2.4 H.264优化算法结构

(1)去掉视频信息中携带的冗余程序代码:系统设计过程中已经完成对H.264编码算法的设置和优化,所以可将去除视频信息中携带的跟编码器无关的冗余代码,如跟多参考帧相关的代码,降低编码过程中程序跳转的次数和需要判断的条件数量。

(2)正确使用循环和分支操作:本次设计过程中我们将相应代码进行展开处理,将其分解成内核循环程序和外核循环程序,虽然增加了程序的长度,但是提高了代码执行速度。

3 应用模块设计

3.1 USB摄像头驱动

硬件选型设计中,我们选择了中星微301v的摄像头,Linux系统中同样也包括了该摄像头的驱动程序,我们只需完成相应参数的配置即可,即将摄像头驱动程序中的<*> ZC3XX USB Camera Driver语句,修改成301v USB Camera Driver,同时为了能够使用V4L的要求,还需要对其驱动进行配置,将相关语句修改为V4L USB devices,然后再将驱动程序进行重新编译,并且将得到的映像文件下载到S3C6140的开发板中。

3.2 视频采集和编码模块的同步

在系统开发过程中设置了两个缓冲区域,工作过程中轮换进行视频信号的采集,当采集到的视频信号填满一个缓冲区域后,系统就会改变多线程的条件,对当前缓冲区域进行编码处理,采集的图像信息转存到缓冲区域2。同时为了保证监控系统能够实现对多路视频信号的压缩编码,要将FPGA缓存中的数据通过BT.656的格式进行输出,然后利用多路视频解码芯片将输出的BT.656格式数据进行YUV656配置,生成相关视频信号的时序信号,将芯片中缓存的多路视频数据信息读出。

4 结语

本文主要对系统驱动程序、采集程序、压缩程序和传输显示程序进行了测试,给出了相应的测试用例。测试结果表明系统能够满足视频监控系统对实时性的需求,具有较好的界面和功能稳定性。

参考文献

[1]汪光华.智能安防:视频监控全面解析与实例分析.北京:机械工业出版社,2012.

[2]王海军.嵌入式Linux设计与应用教程.上海:上海交通大学出版社,2012.

[3]易庆萍.高校校园视频监控系统设计与应用.重庆:西南交通大学硕士学位论文,2011.

[4]Quanxi Li,Peiqian Liu,Changyou Li.Research on Embedded Video Monitoring System Based on Linux[C],Computer Engineering and Technology,2009,478-481.

[5]袁毅.基于嵌入式Web服务器的网络视频监控.电网技术,2002.

[6]朱秀昌.视频编码新标准——H.264.电信科技,2002(12).

[7]陶志强.视频编码新标准——H.26L.计算机研究,2003(12).

猜你喜欢
视频信号开发板驱动程序
计算机硬件设备驱动程序分析
浅析新一代视频信号ICtCp
Microchip最新推出两款PIC32 Curiosity开发板
浅析单片机开发板的设计与制作
Mouser为您呈上开发关键之STMicroelectronics Nucleo开发板
Arduino和Atmel发布Arduino Zero开发板
基于MPC8280的CPU单元与内部总线驱动程序设计
小飞鸽ZY—2250D数字机无视频输出故障的应急处理
创维超级芯片VCT3803彩色电视机电路分析(4)视频信号处理电路