文件标识码: B
文章编号: 0258-7998(2011)12-0025-04
在嵌入式车载监控终端的应用中,设备运行稳定可靠、监控视频压缩率和分辨率及多种功能可根据需要定制等性能指标,已成该领域关键的应用需求。但已有的解决方案存在如下不足:(1)按照视频服务器来设计[1],只能点播回放而不能做进一步的数据分析;(2)设备主要目的是用于定位移动设备的位置,而对视频和信息数据的处理不够详细[2];(3)作为通用型的设计[3],并不适应特定的环境。本文针对列车使用的特定环境及以上方案的不足,设计了适应列车特点的可定制、可分析监控数据的列车专用型监控系统。
本系统使用的主控芯片为Hi3512,是深圳华为海思半导体有限公司推出的第二代嵌入式高性能通信多媒体处理芯片,其硬件支持H.264和MJPEG等多种协议[4],可广泛应用于实时视频通信、数字图像监控、网络摄像机等领域。
1 列车车载监控的总体结构
车载监控主要用于汽车,列车使用相对较少,主要原因在于列车上的电源系统差异较大,同时列车对车载产品的安全等级要求较高,需要经过相关部门的严格检验才能使用。
本文设计的嵌入式列车车载监控系统由嵌入式列车车载录像机和PC端录像回放分析系统两部分组成。由于列车存在移动距离远、行驶地点偏僻等特点,使得实时监控并不适用于列车。同时考虑到列车的运行时间较长,因此选择较低成本较大容量的硬盘作为监控录像存储介质。列车运行到站后,将硬盘取下到PC端做回放分析。
PC端回放分析软件不仅要回放音视频监控画面,更重要的是要取出混合于视频中的机车号、机车速度、机车位置、车重、计长等信息数据和各种报警信息。这些信息数据和报警信息是通过串口从机车安全信息综合监控装置(TAX箱)采集进监控系统,然后与音视频文件一起混合打包,最后在PC端分离,做进一步分析。通常的机车TAX箱上能够监控到机车运行状况的各种信息,并且可以实时显示出来,但是并不能保存下来。而通过本系统,就可以在回放视频监控画面的同时,回放机车运行的一切操作信息,对分析监控机车的运行状况,有非常重要的作用。
本文设计的列车车载监控系统,可以同时录制4路视频,其中有2路视频用于监控机车主要部件的运行状况,传输至驾驶舱进行实时显示,并同时写入录像文件中;另2路视频监控并记录驾驶员的操作,以预防操作失误。这样一个文件就能全面监控列车的运行信息、机器状况、驾驶员操作、现场环境状况等各种信息,为列车的运行提供了安全保障,可以满足分析潜在隐患、查找分析事故原因等多种功能要求。
2 嵌入式车载系统的硬件设计
主控芯片采用华为海思的Hi3512,该芯片是基于H.264 BP算法的视频压缩芯片,采用ARM9+DSP+硬件加速引擎多核的高度集成的SoC架构,具备强大的视频处理能力。片内具有独立的16 KB的指令cache和16 KB的数据cache,内置MMU。内嵌的DSP内核具有3个ALU,8级流水线设计,支持MPEG-4 AVC/H.264等协议。
整机硬件框图如图1所示,系统采集到的模拟视频信号和模拟音频信号,经过A/D转换后送入Hi3512芯片中的DSP进行压缩;同时又将采集到的数字信号进行合成, 经D/A转换后送入驾驶舱实时显示。车次号、机车号、机车速度、机车位置、车重、计长等信息数据和各种警报信息等TAX箱数据,通过RS485传入主控芯片,与压缩好的音视频数据一起混合打包和存储。
本系统的转换器采用Techwell公司的TW2835,该芯片可以同时支持4路模拟音频输入,4路模拟视频输入,1路模拟音频输出,2路模拟视频输出。Flash用于存储机内嵌入式Linux操作系统和应用程序等相关文件。DDR2作为程序运行内存使用。SATA接口与硬盘连接,用于存储录像文件。RS232接口用于调试机内软件。网络接口用于下载机内软件。USB接口可以升级机内软件,也可以用于存储或导出录像文件。
列车上的电源为110 V直流电源。由于列车上的用电设备多,电路复杂,因此,列车上的用电设备对可靠性、稳定性等要求很高,需要经过相关部门专业检测才能使用。本系统电源部分电路可以适应输入电压在60 V~130 V之间的变化,峰值可过滤300 V,稳定输出为12 V且已经通过相关部门的检测。图2是车载监控系统电源部分的电路。
3 嵌入式车载系统的软件设计
该嵌入式列车车载监控系统采用嵌入式Linux系统[5],海思公司针对Hi3512芯片,提供了一个Linux的软件开发包(SDK)。SDK中包括基于U-boot1.1.4开发的Bootloader和基于标准Linux内核2.6.14移植的Linux内核文件,以及基于busybox 1.1.2版本制作的根文件系统,也包含了一些常用的Linux命令。用户程序开发库则依赖于glibc 2.3.4版本。同时还提供了音视频开发工程的函数库,利用这些函数库,用户可以比较容易地直接使用硬件资源,以快速开发充分利用芯片性能的用户应用程序。
本系统的应用程序用来完成控制视频的采集、压缩、存储等功能。应用软件采用模块化设计,分为VI(VideoInput)、AI(AudioInput)、VIU(VideoInsertUserdate)等几个模块,当需要时可加载运行。
主控芯片硬件支持H.264编码和解码,并且具有基于H.264视频压缩的一系列优点[6],本系统选择H.264视频编解码处理视频。音频部分采用8 kHz采样率、16 bit精度的ADPCM(Adaptive Differential Pulse Modulation)编码。
视频、音频、信息数据分别按照各自规则压缩编码、添加时间戳,最后混合打包成一个文件。此文件可以在监控机上回放,也可以在PC端做进一步分析。
图3为音视频采集复合软件模块流程图,图4为用户数据插入软件模块流程图。
4 PC端分析回放系统设计
录制的音视频文件有一个文件头,其中保存一些固定信息,如车次、司机号、录像文件通道、制式、码率以及清晰度等,其后是交错排列的音频帧和视频帧。其中信息数据帧添加在视频帧中,根据H.264标准,I帧包含的信息量大,为关键帧。以每秒25帧的录制速度为例,每秒只有一帧I帧,其余为P帧,P帧包含的是与前一帧的差值。同时,TAX箱中的数据并不是更新得很快,所以在每秒1帧的I帧中插入TAX数据,P帧为全部视频数据,这样就能够满足存储所有的TAX箱数据,也大大减小了冗余数据的存储。必要时也可添加TAX箱数据到P帧,其中音、视频帧交错排列,音频帧就可以不需要时间戳等与视频帧同步的信息,解码完一帧视频数据后立即解码音频帧,就可以做到音视频同步。
视频帧结构如图5所示。音频帧结构如图6所示。
其中音视频帧数据都是8 B对齐,即包括帧头在内,占用磁盘空间大小为8的整数倍个字节,当一帧数据不是8的整数倍时,末尾加0填充,这样解码时就可以快速搜索到帧头,在用户拉动进度条跳播时,可以快速定位。
根据视频文件结构,PC端视频文件处理的主程序结构如下:
while (1)
{
Int nFrameType = 0;//取4 B的数据,标识符以
//4 bit加以区别
if(m_pVideoWnd->Search(filename,&nFrameType)==-1)
break;
switch (nFrameType)
{
case FRAME_I_TYPE://视频I帧帧头,标识符x0dc
{
Userdate(); //提取用户数据,如TAX箱数据
Displayframe(); //送视频解码器,
//以及直接显示到屏幕
}
break;
case FRAME_P_TYPE://视频P帧帧头,标识符x1dc
{
Displayframe()//查找到本帧前一个I帧,
//然后送解码器并显示
}
break;
case FRAME_A_TYPE://音频帧头,标识符x3wb
{
Playsound();//提取音频帧数据,
//送音频解码器
}
break;
default:
break;
}
}
其中,视频帧中的TAX箱数据和视频数据是放在一起的,当判断出是视频帧后,程序立即进入TAX箱数据提取,提取的TAX箱数据送到TAX箱数据的处理线程,将车次、司机号、速度、公里标等信息输出到屏幕上相应位置。提取出TAX箱数据后的视频帧数据,送入H.264视频解码器,视频解码后输出的是YUV视频数据,再借助微软公司的DirectX SDK9.0中的Directshow,将视频YUV数据绘制到用户屏幕。
判断出是音频帧后,将音频帧中的音频数据,送入音频解码器。注意音频帧数据中还包含有音频帧头,其帧头中包含的信息是帧长度和循环次数信息,解码后输出的是脉码调制PCM(Pulse Code Modulation)录音原始音频采样数据。PCM音频数据也通过微软公司的DirectX SDK9.0中的Directsound进行回放。需要注意的是,音频压缩帧是160 B/帧,解码后是480 B/帧。逐帧音频回放时会有停顿的情况,若将多帧融合,再做回放,又会产生明显的音视频不同步现象,所以最终是将两帧音频合在一起一次回放。
PC端软件是基于Microsoft Visual Studio 2005 MFC文档/视图结构开发的,其中,视频解码和音频解码均使用了海思公司提供的解码库,音视频回放使用了DirectX SDK9.0。
本文给出了一种基于Hi3512芯片的嵌入式列车车载监控系统的设计与实现方案,Hi3512采用ASIC芯片硬件实现视频的编解码,与采用ARM芯片加DSP软件编解码方案相比,开发难度和成本都比较低。使用与Hi3512芯片相配合的操作系统和应用软件开发包,进一步降低了系统的开发周期和成本。同时,本文还介绍了一种视频信号中混合机车TAX箱信号的方法以及视频信号混合机车运行信号的设计和回放分析提取的具体流程。近一年的调试和实际运行测试表明,本设计产品能够完成最初的设计要求,可以规模化使用,有广泛的应用前景。
参考文献
[1] 孙戈,郭小玄.基于Hi3510的Linux嵌入式视频服务器的设计[J].煤炭技术,2009,28(11):146-148.
[2] 周辉,叶桦,仰燕兰.基于WebGIS与车载移动视频的智能车辆监控系统[J].东南大学学报,2010,40:192-197.
[3] 李渊,于海勋.基于Hi3510的车载监控系统的设计[J].微计算机应用,2008,29(1):67-69.
[4] 深圳市海思半导体有限公司.Hi3511/Hi3512硬件设计用户指南[z].2009.
[5] 深圳市海思半导体有限公司.Hi3511/Hi3512_linux开发环境用户指南[z].2008.
[6] 毕厚杰.新一代视频压缩标准—H.264/AVC[M].北京:人民邮电出版社,2005.