邵澤靖,胡 靜,宋鐵成,黃 秦
(東南大學(xué) 信息科學(xué)與工程學(xué)院,江蘇 南京 210096)
隨著社會經(jīng)濟的發(fā)展,交通運輸業(yè)成為國民經(jīng)濟發(fā)展重要經(jīng)濟命脈。移動通信技術(shù)的發(fā)展,為物聯(lián)網(wǎng)技術(shù)提供了強有力的支持,在交通運輸行業(yè)催生了車聯(lián)網(wǎng)這一概念。車聯(lián)網(wǎng)概念引申自物聯(lián)網(wǎng)(Internet of Things,IoT)。行業(yè)背景不同,對車聯(lián)網(wǎng)的定義也不相同。傳統(tǒng)的車聯(lián)網(wǎng)定義是指裝載在車輛上的電子標(biāo)簽,通過無線射頻等識別技術(shù)實現(xiàn)在信息網(wǎng)絡(luò)平臺上,對所有車輛的屬性信息和靜、動態(tài)信息進行提取和有效利用。根據(jù)不同的功能需求,對所有車輛的運行狀態(tài),進行有效的監(jiān)管并提供綜合服務(wù)的系統(tǒng)。車載視頻監(jiān)控是車聯(lián)網(wǎng)領(lǐng)域的一個重要研究課題,它能方便用戶實時、直觀地監(jiān)控車輛安全情況[1]。為了更有效地對車輛情況進行監(jiān)管,本設(shè)計使用Hi3520D作為車載終端核心芯片,基于Linux嵌入式進行程序設(shè)計,實現(xiàn)采集、顯示、存儲視頻數(shù)據(jù)功能,將車載終端作為流媒體服務(wù)器,供遠程視頻監(jiān)控軟件查看視頻終端內(nèi)的視頻文件。
本系統(tǒng)使用車載終端掛載攝像頭對車體四周進行監(jiān)控,遠程監(jiān)控客戶端通過網(wǎng)絡(luò)訪問車載終端視頻監(jiān)控系統(tǒng),查看車輛情況,系統(tǒng)總體設(shè)計如圖1所示。在本系統(tǒng)中,在每個車載終端上掛載4路攝像頭。車載終端對采集到的視頻數(shù)據(jù)進行處理與顯示,并將視頻數(shù)據(jù)保存在本地存儲設(shè)備之中。遠程監(jiān)控客戶端通過網(wǎng)絡(luò)訪問車載終端中的視頻文件,查看車輛情況。此時,車載終端不僅能作為視頻采集與存儲的設(shè)備,而且可以作為視頻文件的流媒體服務(wù)器,將本地視頻以流的方式推送到視頻監(jiān)控客戶端。
系統(tǒng)硬件總體結(jié)構(gòu)如圖2所示。其中車載核心芯片使用了基于ARM9處理器的HI3520D,使用130萬像素的AHD高清車載專用攝像頭,通過NVP6114視頻解碼芯片將數(shù)據(jù)傳送到HI3520D核心芯片中。4G模塊主要采用了移遠LTE EC20進行視頻數(shù)據(jù)傳輸。WiFi模塊主要使用了RTL8188 CUS芯片。通過RS232串口進行信息調(diào)試的輸入和輸出,USB可以接外置存儲設(shè)備和鼠標(biāo)設(shè)備。

圖1 系統(tǒng)總體設(shè)計

圖2 系統(tǒng)硬件架構(gòu)
車載視頻監(jiān)控系統(tǒng)核心芯片主要使用了搭載Linux操作系統(tǒng)的HI3520D。HI3520D是針對多路D1和多路高清DVR,NVR產(chǎn)品應(yīng)用開發(fā)的一款專業(yè)SOC芯片。其采用ARM9處理器內(nèi)核,處理器頻率高達600 MHz,集成8路D1多協(xié)議編解碼能力的引擎與豐富的視頻輸入輸出接口(CVBS、高清VGA、BT1120),充分滿足客戶產(chǎn)品的高質(zhì)量圖像體驗與車載視頻監(jiān)控應(yīng)用軟件開發(fā)需求[2]。海思提供的媒體處理軟件平臺(Media Process Platform,MPP),可支持HI3520D應(yīng)用軟件快速開發(fā)。該平臺對應(yīng)用軟件屏蔽了芯片相關(guān)的復(fù)雜的底層處理,并對應(yīng)用軟件直接提供MPP程序接口(MPP Programe Interface,MPI)完成相應(yīng)功能。該平臺支持應(yīng)用軟件快速開發(fā)以下功能:輸入視頻捕獲、H.264/MJPEG/JPEG/MPEG4 編碼、H264/VC1/MPEG4/MPEG2/AVS 解碼、視頻輸出顯示、視頻圖像前處理(包括去噪、增強、銳化、Deinterlace)、編碼碼流疊加 OSD、視頻偵測分析、智能分析、音頻捕獲及輸出、音頻編解碼等功能[5]。
視頻采集模塊主要使用了NextChip NVP6114作為視頻采集芯片。NVP6114作為AHD1.0的接收芯片RX,可以接收960 H CVBS/Comet,720 p(AHD)。NVP6124作為AHD2.0的接收芯片R,用于DVR的時候,因為能接收所有960 H CVBS/Comet,1 280 H CVBS/Comet,720 p(AHD),1 080 p(AHD)圖像,所以能夠處理多種視頻圖像。
EC20是移遠通信最近推出的LTE Cat.3模塊;采用LTE 3GPP Rel.9技術(shù);支持最大下行速率100 Mbps和最大上行速率50 Mbps,可以滿足視頻傳輸?shù)母邘捯蟆C20在封裝上兼容移遠通信UMTS/HSPA+ UC20模塊,實現(xiàn)了3G與4G網(wǎng)絡(luò)之間的無縫切換,并且向后兼容現(xiàn)存的EDGE和GSM/GPRS網(wǎng)絡(luò),以確保在缺乏3G和4G網(wǎng)絡(luò)的偏遠地區(qū)也能正常工作。EC20使用多輸入多輸出技術(shù),使信號通過發(fā)射端與接收端的多個天線傳送和接收,從而降低誤碼率,改善通信質(zhì)量。同時,它結(jié)合了高速無線連接與內(nèi)置多星座高精度定位GPS+GLONASS接收器。EC20內(nèi)置豐富的網(wǎng)絡(luò)協(xié)議,集成多個工業(yè)標(biāo)準(zhǔn)接口,可以工作在多種嵌入式設(shè)備中。
嵌入式在存儲空間與處理器速度等硬件資源上有限,所以不可能直接在車載終端上直接進行開發(fā),必須在上位機PC上進行所有的軟件開發(fā)與調(diào)試,通過串口或者網(wǎng)絡(luò)將目標(biāo)程序下載到目標(biāo)機上運行,這就需要搭建交叉編譯環(huán)境[3]。使用VMware安裝Linux操作系統(tǒng),本文使用的Linux操作系統(tǒng)為Ubuntu 16.04。安裝完操作系統(tǒng)之后需要安裝交叉編譯器,本系統(tǒng)開發(fā)所使用的編譯器是arm-hisiv100nptllinux-gcc,版本是4.4.1。為了加快開發(fā)速度,不使用串口或者網(wǎng)絡(luò)將目標(biāo)程序下載到目標(biāo)機上運行的方式,而是使用NFS網(wǎng)絡(luò)文件系統(tǒng),將宿主機上的指定目錄作為共享文件夾,通過NFS網(wǎng)絡(luò)文件系統(tǒng)將共享文件掛載在目標(biāo)機上,這樣免去了下載程序的步驟,直接在目標(biāo)機器上運行程序查看效果。
海思圖標(biāo)幀緩沖區(qū)(Hisilicon Framebuffer,HiFB)是海思數(shù)字媒體處理平臺提供的用于管理疊加圖形層的模塊,它不僅提供Linux Framebuffer的基本功能,還在Linux Framebuffer的基礎(chǔ)上增加層間colorkey、層間colorkey mask、層間Alpha、原點偏移等擴展功能[4]。可以使用支持Linux Framebuffer的Qt進行GUI程序設(shè)計。Qt是一個跨平臺的C++圖形用戶界面應(yīng)用程序框架。它提供給應(yīng)用程序開發(fā)者建立藝術(shù)級的圖形用戶界面所需的所用功能。Qt是完全面向?qū)ο蟮模苋菀讛U展,并且允許真正地組件編程。使用Qt進行嵌入式軟件開發(fā)需要使用交叉編譯器進行交叉編譯后方可使用,本系統(tǒng)使用的是經(jīng)過剪裁后的Qt 4.8.6 。
車載終端不僅作為視頻采集與存儲的設(shè)備,還作為視頻播放的服務(wù)器。使用了基于RTP/RTCP/RTSP/SIP的開源Live555進行視頻服務(wù)器的開發(fā)。Live555是一個為流媒體提供解決方案的跨平臺的C++開源項目。標(biāo)準(zhǔn)流媒體傳輸是一個為流媒體提供解決方案的跨平臺的C++開源項目,它實現(xiàn)了對標(biāo)準(zhǔn)流媒體傳輸協(xié)議如RTP/RTCP,RTSP,SIP等的支持。Live555實現(xiàn)了對多種音視頻編碼格式的音視頻數(shù)據(jù)的流化、接收和處理等支持,包括MPEG,H.263+,DV,JPEG視頻和多種音頻編碼。Live555現(xiàn)已經(jīng)支持嵌入式開發(fā),但需要使用交叉編譯工具在宿主機上進行移植后方可使用。
終端軟件設(shè)計主要包括3個部分,視頻采集與顯示、GUI界面交互、流媒體服務(wù)器,整個軟件設(shè)計架構(gòu)如圖3所示。

圖3 系統(tǒng)軟件設(shè)計架構(gòu)
本車載終端默認使用4路720P視頻進行錄制,使用VGA進行輸出。視頻采集與顯示主要使用MPP平臺下視頻輸入、視頻處理與視頻輸出3個模塊。視頻輸入模塊捕獲視頻圖像,可對其作剪切、縮放、鏡像處理,并輸出多路不同分辨率的圖像數(shù)據(jù)。視頻處理模塊接收視頻輸入發(fā)送過來的圖像數(shù)據(jù),可對圖像進行去噪、圖像增強、銳化等處理,并實現(xiàn)同源輸出多路不同分辨率的圖像數(shù)據(jù),用于編碼、預(yù)覽或抓拍。視頻輸入模塊接收視頻處理模塊處理后的輸出圖像,可進行播放控制等處理,最后按用戶配置的輸出協(xié)議輸出給外圍視頻設(shè)備。MPP提供將系統(tǒng)綁定接口,即通過數(shù)據(jù)接受者綁定數(shù)據(jù)源,來建立二者的關(guān)聯(lián)關(guān)系,綁定后數(shù)據(jù)源生成的數(shù)據(jù)將直接發(fā)送給接受者,整個過程如圖4所示。

圖4 視頻采集與顯示流程
步驟1:計算視頻緩存池大小及初始化系統(tǒng)。視頻緩存池主要向媒體業(yè)務(wù)提供大塊內(nèi)存管理功能,負責(zé)內(nèi)存的分配與回收,充分發(fā)揮內(nèi)存緩存池的作用,讓物理資源在各個媒體處理模塊中合理使用。
步驟2:打開視頻輸入模塊,HI3520D視頻輸入模塊有兩個視頻輸入設(shè)備Dev0和Dev1,每個視頻輸入設(shè)備有4個通道。打開視頻輸入模塊步驟,主要是依次打開每個視頻輸入設(shè)備之后,再打開每個視頻輸入設(shè)備的通道。
步驟3:開啟視頻處理模塊,并將視頻處理模塊與視頻輸入模塊進行綁定。視頻處理模塊通過提供組(Group)的概念,將每組分為3種通道:物理通道、直通通道和擴展通道。HI3520D不支持擴展通道,只含有物理通道和直通通道,如表1所示 。將視頻輸入設(shè)備Dev0的4個通道分別與視頻處理模塊每組的物理通道0進行綁定。

表1 HI3520D視頻處理模塊通道規(guī)格
步驟4:打開視頻輸出模塊并將其與視頻處理模塊進行綁定。HI3520D視頻輸出模塊支持3個圖形層(G0~G2),1個鼠標(biāo)層。其中,G0~G2圖形層分別固定綁定到高清設(shè)備(DHD0)、標(biāo)清設(shè)備0(DSD0)和標(biāo)清設(shè)備1(DSD1)。鼠標(biāo)層可以綁定到DHD0,DSD0,DSD1。其中,每個高清設(shè)備有16個通道,標(biāo)清設(shè)備有32個通道[5]。啟動高清設(shè)備后,將高清設(shè)備的0~8號通道分別與視頻處理模塊的每個組的物理通道2進行綁定。
在使用Qt進行界面GUI設(shè)計之前,需要調(diào)用open函數(shù)將制定HiFB打開。整個HiFB開發(fā)流程如圖5所示。使用Qt進行GUI設(shè)計主要是為了控制視頻文件存儲打開/關(guān)閉,相關(guān)視頻參數(shù)的設(shè)置。視頻文件存儲打開/關(guān)閉主要是使用MPP平臺下的視頻編碼模塊。視頻編碼模塊同樣使用組,首先創(chuàng)建組,其次打開相應(yīng)通道,然后將相應(yīng)通道注冊到相應(yīng)組,之后打開相應(yīng)通道接收圖像數(shù)據(jù),最后將視頻處理模塊與視頻編碼模塊進行綁定。本系統(tǒng)中將獲取視頻碼流存儲為H.264編碼的功能封裝到了一個相應(yīng)的函數(shù)中,在Qt界面中點擊相應(yīng)按鈕便可以完成視頻文件存的打開/關(guān)閉功能。
車載終端流媒體服務(wù)器主要是使用Live555開源項目中的live555MediaServer通過RTSP/RTP協(xié)議傳輸視頻流。在本項目中流媒體服務(wù)器是作為子進程運行的。通過進程間的通信方式,可以在父進程,也就是GUI界面中關(guān)閉和開啟流媒體服務(wù)器。Live555MediaServer程序中首先創(chuàng)建BasicTaskScheduler和BasicUsageEnvironment對象。TaskScheduler是任務(wù)調(diào)度中心,實現(xiàn)事件的異步處理、事件處理函數(shù)的注冊,主要負責(zé)任務(wù)的調(diào)度與執(zhí)行。UsageEnvironment可以輸入輸出消息,代表整個系統(tǒng)環(huán)境。然后創(chuàng)建DynamicRTSPServer對象。RTSPServer實現(xiàn)相應(yīng)端口的監(jiān)聽,對于請求進行應(yīng)答。最后開啟時間主循環(huán),不斷監(jiān)聽客戶端請求,實現(xiàn)應(yīng)答[6]。
系統(tǒng)測試主要是用本地PC與車載終端進行聯(lián)合測試,兩者連接到名稱為TP-HISI的WiFi,將車載終端啟動完成后,PC通過WiFi訪問車載終端,車載終端實物如圖6所示。圖6中,1為串口轉(zhuǎn)USB接口,2為以太網(wǎng)口,3為VGA接口,4為電源接口,5為攝像頭接口,6為攝像頭,7為RTL8188 CUS WiFi模塊,8為SIM卡槽,9為SD存儲卡接口,10為7寸顯示器。圖7為核心板背面,圖7中,1為Hi3520D芯片,2為NVP6114視頻采集芯片。

圖5 HiFB開發(fā)流程

圖6 車載終端視實物

圖7 核心板背面
將圖6中7寸顯示器通過VGA接口與車載終端相連接,啟動車載終端程序,界面顯示如圖8所示。通過圖8可看出,視頻采集與顯示功能完好,圖8中右下角start和stop按鈕分別控制視頻文件的存儲開關(guān)。通過測試,視頻文件存儲功能正常,存儲在本地磁盤上文件名稱為stream_chnx.264,其中x表示通道號。

圖8 車載終端界面顯示效果
將車載終端與本地電腦連接至無線TP-HISI,分配地址IP分別為192.168.100.77與192.168.100.100。本地電腦使用VLC播放器訪問車載終端,訪問格式為:rtsp://IP:Port/filename。其中,IP為車載終端,Port表示地址端口號,測試端口號為554,filename使用視頻存儲的文件名,文件名為“stream_chnx.264”,其中x表示通道號。訪問通道0的視頻錄像文件stream_chn0.264,播放效果如圖9所示,播放速率實測為25幀/s。圖10是VLC播放器對當(dāng)前播放的統(tǒng)計,從圖中可看出,播放器丟幀率較低,使用WiFi傳輸碼流速度很高。

圖9 VLC播放效果

圖10 VLC播放統(tǒng)計
本文使用Hi3520D作為嵌入式核心芯片,通過NVP6114采集視頻,移植Qt設(shè)計GUI界面程序,控制H.264編碼視頻的存儲開關(guān),使用戶更易于控制視頻終端,達到了良好的交互效果。本設(shè)計將車載終端作為視頻流媒體服務(wù)器,可使遠程視頻監(jiān)控客戶端通過網(wǎng)絡(luò)訪問車載終端視頻文件,達到了瀏覽監(jiān)控視頻的效果,滿足車載視頻監(jiān)控的各項要求,可以應(yīng)用于車載視頻監(jiān)控系統(tǒng)中。