文件標識碼: 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.