DVR 系统中视频采集压缩的软件设计
2010-01-08赵传跃
赵传跃,彭 宏
(浙江工业大学信息学院,浙江杭州310023)
DVR 系统中视频采集压缩的软件设计
赵传跃,彭 宏
(浙江工业大学信息学院,浙江杭州310023)
视频采集和压缩是数字录像机系统的核心内容,其效果直接影响整个系统的性能。该文介绍了基于GM8180+TW 2835的Linux嵌入式DVR系统的硬件框架,提出了切实可行的视频采集压缩方案。对嵌入式DVR的开发有一定的参考价值。
嵌入式;数字录像机;视频采集;视频压缩
0 引 言
DVR(数字录像机,DigitalVideo Record)监控管理系统集先进的计算机网络技术、多媒体技术和通信技术于一体,不仅能够完全实现传统模拟设备的功能,还大大增强了系统的稳定性和扩展能力,提高了图像显示的清晰度和数据安全性,更为重要的是,它利用当前流行的H.264压缩技术可以将大量的录像数据保存,为远程网络浏览、录像查询回放提供了方便[1]。本文介绍了嵌入式DVR系统的硬件框架,视频数据的格式和流向。提出可行的视频采集压缩软件方案,实际测试的结果证明,本系统的采集压缩效果很好,回放出来的图像画面清晰。
1 DVR系统的硬件框架
1.1 硬件框架
DVR系统硬件主要由视频采集模块、视频处理模块和存储模块三部分组成,如图1所示。
图1 DVR系统的硬件框架图
模拟视频信号从摄像头采集进来,经过视频采集模块的处理后以标准BT.656格式的数字信号输入到视频处理模块中。视频处理模块捕捉到一帧的视频数据后,通过内部的压缩模块将视频帧压缩成一帧H.264格式的视频帧,然后将该帧数据输入到存储模块,由存储模块将数据存放到相应位置,这样就完成了一帧数据的处理过程。
视频采集模块:主要的功能是接收4路摄像头的模拟视频数据,经过模数转换后形成4路D1大小的视频流,然后通过特殊的算法处理,将4路D1大小的视频数据合成为1路D1大小的视频数据,即一个D1的视频画面中呈现出4个CIF大小的视频画面。其中关键的视频采集芯片为TW2835。
视频处理模块:主要的功能是能同时捕捉两路D1大小的视频流,按照H.264标准压缩不同格式大小的视频数据,并向存储模块写入数据。其中关键的视频处理芯片是GM 8180。存储模块:主要的功能是将视频文件保存到大容量硬盘中,建立有效的文件列表,保证能随时找到需要回放的视频文件。
1.2 DVR系统中主要芯片
DVR系统主要由视频采集模块和视频处理模块构成。该系统的视频采集模块选择了Techwell公司的TW 2835芯片,而视频处理模块选择了台湾的FARADAY技术公司设计的GM8180芯片,其中CPU就集成在该模块中。TW2835芯片是Techwell公司近年来新推出的一款4信道视频和音频控制器。它包括4个高质量的NTSC/PAL视频解码器、4个音频模拟数字转换器、1个音频复用器、双色显示控制器、双视频解码器以及一个先进的OSD[1]。主要实现了将4路视频输入合成为1路视频输出的功能,能够满足DVR在视频采集端的要求。GM 8180是高度集成的编解码系统单芯片,支持H.264、MPEG-4以及JPEG编解码,可以应用于视频分析、对象侦测、目标应用锁定、网络串流媒体以及网络监控等[2]。GM 8180集成各种存储方式接口和图形输出接口。最重要的亮点是该系统支持高清影像传输接口,集成H.264硬件编解码,在高分辨率下的H.264压缩效能可以达到30帧。H.264压缩比MEPG-4节省了1/3的频宽,能够降低频宽以及在储存上所需花费的成本[3]。CPU采用的是FA626,FA626是GM 8180的控制核心,是智原科技新近推出的ARM 9芯片。FA626主要是针对下一代网络、对媒体和网络应用所设计,采用0.13μm工艺,时钟速度可达到533MHz,执行速度为650MIPS,包含4向32KB的指令快取以及数据快取。
CPU和各模块都挂载在AHB总线上,通过AHB控制器控制,如图2所示:
图2 CPU和各模块连接图
2 视频采集压缩的软件设计
2.1 软件开发环境
Linux操作系统作为一种多任务、稳定可靠、内核可裁剪的系统可以运行在多种硬件平台上,是开发嵌入式软硬件产品的优秀平台。裁剪和优化后的Linux体积更小,性能更加稳定,而且源代码本身是免费的。这大大减少了开发商的成本,使其更具市场竞争力。同时,由于遍布全球的众多Linux爱好者又能给予Linux开发者强大的技术支持,所以众多商家纷纷转向嵌入式Linux的开发。本系统也选择了嵌入式linux操作系统,内核版本采用的是Linux2.6.14。
2.2 视频采集压缩的软件设计
2.2.1 对视频数据处理的要求和思路
本系统要实现的功能有:(1)实现4路25帧/s的采集用于本地存储,其中3路CIF、1路D1;(2)实现1路6帧/s的采集用于网络传输,格式为QCIF。本系统所用的视频采集芯片TW2835支持4路模拟输入和4路数字输入,视频数据处理芯片GM8180采用硬件压缩,最大能同时支持2路D1格式的压缩,在数据处理能力等方面完全可以满足系统的需求。
2.2.2 主程序流程
首先要初始化硬件,主要是初始化视频采集芯片TW2835,按需求设置寄存器。创建3个线程,分别用于一路D1、三路CIF、一路QCIF图像的采集和压缩。其中D1和CIF数据用于本地存储,压缩完写入文件存储,QCIF数据用于网络传输,压缩后放到共享内存中,用于网络发送进程来读取视频数据并发送到客户端。主程序流程如图3所示:
图3 程序流程框图
2.2.3 视频采集和压缩流程
视频采集和压缩线程是本系统软件的核心部分,其流程如图4所示:
图4 视频采集和压缩线程的流程图
(1)视频采集
视频采集主要包括3部分:设备初始化、内存映射、视频采集。
设备初始化:首先打开视频设备,GM8180能同时处理两路视频数据,所以有两个设备文件分别是/dev/video1和/dev/video2。采用系统调用函数fd=open(”/dev/video*”,O_RDWR),fd是设备打开后返回的文件描述符(打开失败则返回-1),以后的ioctl函数就是使用这个文件描述符对视频设备进行相应的操作的。接着调用ioctl(fd,VIDIOCGCAP,&capability)函数读取有关摄像头的信息[4]。此函数成功返回后,系统将这些信息从内核空间拷贝到用户程序的capability各成员变量中。应用程序能了解摄像头的具体参数并允许进行修改。内存映射:首先调用ioctl(i_video_fd,VIDIOCGMBUF,&gb_buffers)函数获取摄像头存储缓冲区的帧信息[4]。接着调用mmap()函数把视频设备对应的设备文件映射到内存区,该映射内容可读写并可在进程间共享。视频采集:首先调用ioctl(i_video_fd,VIDIOCMCAPTURE,&mmap)来捕获视频帧,接着调用ioctl(i_Video_fd,VIDIOCSYNC,&frame)函数来判断该帧图像是否截取完毕。之后就可以对原始的图像数据进行处理了。
(2)视频压缩
初始化编码模块:H.264压缩模块在设备中的设备文件名为/dev/f264enc。首先打开H.264压缩设备,将这些参数写入到ENC_DEV格式的结构体中,然后调用驱动命令FAVC_IOCTL_ENCODE_INIT初始化H.264压缩设备[5]。开始压缩:合理初始化压缩模块的各个参数之后,直接调用驱动命令FAVC_IOCTL_ENCODE_FRAME进行压缩。
3 结束语
回放压缩后图像的效果如图5所示,测试结果证明,上述的采集和压缩程序实现了一路D1、三路CIF和一路QCIF格式的数据的采集和压缩,并且效果良好。
图5 效果图
[1]付英华,傅尔胜.DVR音视频压缩卡及其Linux驱动[J].陕西科技大学学报,2005,10(2):25-27.
[2]吴才章.基于ARM的图像采集与显示系统设计[J].自动化技术与应用,2006,29(3):118-122.
[3]张杰.视频编码新标准H.264/AVC中的重要技术[J].现代电子技术,2004,8(6):104-106.
[4]Techwell.Techwell TW2835(4 Channel Video and Audio Controller For Secyrity Application)datesheet[EB/CD].http://www.techwell.com:Techwell,Inc,2004-01-03.
[5]刘伟平,毛玉良,潘纯,等.嵌入式Linux下驱动程序的开发[J].航空精密制造技术,2003,39(3):23-25.
Software Design and Implementation of Video Capture and Compression in Digital Video Record ZHAO Chuan-yue,PENG Hong
(Collegeof Communication Engineering,Zhejiang University of Technology,Hangzhou Zhejiang310023,China)
The coreof digitalvideo record system is video capture and compression thatwould affect thesystem.In this paper,we demonstrate a feasiblemethod for video capture and compression,basing on theplatform ofGM8180 and TW2835.Have some reference value on the development of embedded DVR.
embedded;DVR;video capture;video compression
TN401
A
1001-9146(2010)05-0145-04
2010-07-20
赵传跃(1984-),男,安徽宿州人,在读研究生,宽带接入网.