基于嵌入式Linux的视频循环录制系统
摘要:本文以行车视频录制为背景,设计了以三星公司ARM9芯片S3C2440作为主控芯片,可移植开源的Linux系统。在对系统硬件结构、系统原理和环境搭建描述后,重点介绍了视频循环录制功能和将视频保存成跨平台通用的avi文件的过程。测试结果表明此方案可行。
关键词:avi视频;循环存储;嵌入式系统;Linux
引言
视频采集系统以其直观的视频影像数据,对现场场景进行记录,目前已经在各行各业得到广泛应用。对于特定运用场合,如汽车行进过程,由于其环境的不确定性和多样性,以及事故的突发性和偶然性,要求采集系统能够稳定、连续地实时记录事发过程。行车过程事故发生时,需要掌握的事故原因往往在事故发生前短短的一段时间内。因此,分清事故责任和分析事故原因所需要的视频信息,往往是在事故时间点之前的一小段时间内。
日常生活中常见的交通纠纷,往往是因为没有直接证据造成取证困难。基于此,结合嵌入式系统低功耗、低成本等优点,本文利用嵌入式Linux系统实现行车视频存储,存储的视频可以为交通纠纷的调解以及交通事故认定,提供现场录像证据。
1 系统概述
1.1 系统硬件结构
系统硬件结构如图1所示。主控制芯片为三星的ARM9芯片S3C2440,它内部含有MMC/SD/SDIO控制器、NAND Flash控制器、USB主控制器、存储器控制器、时钟和电源管理等模块。其中,存储器控制器为访问外部存储提供必要的存储控器控制信号;NAND Flash控制器为外挂的NAND Flash存储器提供控制信号,而NANDFlash控制器由于其价格经济,用于执行引导程序;时钟和电源管理模块由时钟控制、USB控制和电源控制3部分模块组成,时钟控制模块用于产生必要的时钟信号,电源管理模块用于提供电源管理方案,保证对给定任务的最佳功耗;USB主控制器支持2个端口的USB主机接口,支持低速及全速USB设备,在本系统中用于连接USB摄像头;MMC/SD/SDIO控制器为外接SD卡提供控制和数据信号,使视频数据的存储变得可能。
1.2 系统原理
NAND Flasht大小为256 MB,用于存储文件系统,执行必要的引导程序。SDRAM为64 MB内存。考虑行车过程的震动环境,视频存储设备采用能够牢靠固定的SD卡。除了稳固的优点外,SD卡还有价格便宜、方便拔插的优点。要实现行车视频的录制存储,首先需要采集视频数据。考虑到嵌入式存储器的资源相对有限,本设计使用中星微电子公司ZC301芯片的摄像头,此类摄像头的视频数据经过摄像头内部专用DSP芯片处理过,输出的信号是JPEG格式的。移植Linux系统后,利用Linux下视频采集和输出驱动的内核接口V4L2对视频进行采集,然后对采集到的视频数据按照avi标准格式进行封装,添加必要的帧头信息后,将其一帧一帧存入插在SD卡座上的SD卡内,采用特定方法对视频文件进行管理,实现视频的循环存储,以节约存储空间。将采集存储到SD卡的视频文件拷贝到任意的带视频播放器的平台上,即可查看录制的视频信息。
由于ZC301摄像头输出的每帧是JPEG格式数据,因而存储的avi视频文件是MJPEG压缩,其中,每一帧图像都分别使用JPEG编码。MJPEG视频压缩仅采用帧内压缩,不需要过多的运算能力,无需为视频压缩浪费大量的计算效率,适合用于嵌入式设备中。虽然其压缩率不是很高,造成视频文件尺寸较大,但是由于该行车视频录制系统只需保存事故发生前一段时间内的现场视频,综合考虑MJPEG压缩可以满足要求。
2 嵌入式环境搭建
要在嵌入式平台实现系统功能,需要通过主机构建基本的软件系统,并烧写到设备中。采用交叉开发模式以适应嵌入式设备的资源不足。首先,在主机编译Bootloader,将编译出的镜像文件烧入设备;然后在主机编译嵌入式Linux内核,通过Bootloader烧入板子;最后,在主机上编译实现相关功能的应用程序,通过NFS运行,经过验证成功后再烧入板子,过程如图2所示。该部分内容不作详细阐述,具体的搭建过程可参考相应的资料。
系统的软件设计主要包括视频图像的采集、使用特定方法实现视频数据的循环存储,其中重点在于,按照avi格式将采集的数据进行封装,并且实现视频文件循环存储。
3.1 avi文件格式
avi(audio video interleaved)格式即音频视频交错格式,1992年由Microsoft公司推出。所谓“音频视频交错”,就是可以将视频格式和音频格式交织在一起进行同步播放。
RIFF文件使用4字符码FOURCC(Four—Character Code)来表示数据类型,例如“RIFF”表示这是一个RIFF文件,“AVI”表示文件的具体类型,“LIST”表示用列表的形式来组织数据。其结构如图3所示。作为一种多媒体文件的存储方式,不同编码的音频、视频文件,都可以按照RIFF定义的存储规则保存、记录各自不同的数据,如数据内容、采集信息、显示尺寸、编码方式等。播放器播放这些文件时,会根据RIFF的规则分析文件,正确解析出音视频信息进行播放。
- Linux嵌入式系统开发平台选型探讨(11-09)
- 嵌入式系统中文输入法的设计(03-02)
- 基于MPC755的嵌入式计算机系统设计(05-10)
- WinCE下光电编码器的驱动程序设计(04-12)
- 为什么嵌入式开发人员要使用FPGA(05-13)
- VxWorks几种常用的延时方法介绍(05-16)