新聞中心

EEPW首頁 > 模擬技術 > 設計應用 > 基于Au1200的無線車載視頻監(jiān)控的實現(xiàn)

基于Au1200的無線車載視頻監(jiān)控的實現(xiàn)

作者: 時間:2012-03-07 來源:網(wǎng)絡 收藏
引 言

  隨著無線寬帶網(wǎng)絡的發(fā)展、數(shù)字移動電視的建設、多媒體技術的應用,集多種功能于一體的媒體處理系統(tǒng)應運而生,它可廣泛地應用于鐵路、地鐵、客運汽車等交通系統(tǒng)。

  本文簡要介紹了基于處理器,包含無線傳輸、視頻播放、等多種功能的嵌入式媒體處理系統(tǒng)的設計方案,詳細描述了基于ffmpeg的軟壓縮方法,設計并實現(xiàn)了車載系統(tǒng)中部分的視頻采集和視頻壓縮。

  1 媒體處理系統(tǒng)簡介

  基于的無線車載媒體處理系統(tǒng)網(wǎng)絡架構如圖1所示。采用客戶端/服務器架構,由車載客戶端、車站服務器及通信網(wǎng)絡三部分組成。其中,客戶端選用AlchemyTM 作為主控芯片。該芯片采用了MIPS32核心,是針對數(shù)字多媒體播放器、汽車信息娛樂系統(tǒng)等應用領域設計的一款低功耗、高性能的嵌入式處理芯片。利用Au1200在媒體處理方面的優(yōu)勢及其豐富的外圍接口,無線車載媒體處理器的系統(tǒng)框圖如圖2所示。用戶可以通過按鍵控制整個系統(tǒng)無線傳輸、視頻播放、等多種功能。

  

基于Au1200的無線車載媒體處理系統(tǒng)網(wǎng)絡架構

  服務器端使用通用的PC機服務器,為整個系統(tǒng)提供多媒體資源管理和無線網(wǎng)絡服務。

  每個裝有無線車載媒體處理器的車輛,可以通過無線網(wǎng)絡連接服務器,并按照指定的方式傳輸媒體資源。

  2 無線車載視頻監(jiān)控的硬件設計

  Au1200嵌入式處理器采用MIPS32核心,能夠支持包括MEPG-1,MPEG-2,MPEG-4,WMV9,H.263,MP3,WMA,ASF,AVI和JPEG等多種媒體格式,其內(nèi)部集成了專門的媒體加速引擎(Media Acceler-ation Engine,MAE),不需要外部DSP,因而可以簡化編程環(huán)境并減少組件,擁有豐富的片上資源和外部接口,支持USB 2.0,IDE,CCIR656攝像頭等接口。無線車載視頻監(jiān)控硬件框圖如圖3所示。

  

無線車載視頻監(jiān)控硬件框圖

  其中包括:

  (1)視頻監(jiān)控輸入部分:采用Omni Vision公司的彩色CMOS圖像傳感器OV9650作為系統(tǒng)的視頻輸入設備,利用Au1200自帶的CIM(Camera Interface Module)接口,可以方便地控制OV9650。通過I2C方式,配置OV9650攝像頭的工作模式,通過CIM接口讀入采集到的視頻數(shù)據(jù),并映射到內(nèi)存單元中。根據(jù)不同流向需求,處理視頻數(shù)據(jù)流,實現(xiàn)系統(tǒng)的錄制、存儲、播放、傳送等功能。

  (2)視頻監(jiān)控數(shù)據(jù)存放部分:通過ffmpeg軟壓縮方法,將采集到的視頻數(shù)據(jù)按指定視頻格式實時壓縮成文件存儲于硬盤中。

  (3)視頻監(jiān)控數(shù)據(jù)的實時播放部分:采集到的視頻數(shù)據(jù)映射到內(nèi)存后,將RGB視頻數(shù)據(jù)直接輸出到LCD緩沖區(qū)中,即可實現(xiàn)監(jiān)控視頻在LCD設備中的實時播放。系統(tǒng)也支持視頻輸出到VGA接口的顯示設備中實時播放。此時,需要將數(shù)字視頻數(shù)據(jù)轉換為模擬視頻數(shù)據(jù)??刹捎肁DI公司的ADV7123芯片實現(xiàn)三路高速、10位輸入的高速視頻數(shù)/模轉換。三路DAC可以分別處理紅、綠、藍視頻數(shù)據(jù),實現(xiàn)模擬顯示終端的高分辨率顯示。

  (4)視頻監(jiān)控的遠程傳輸部分:通過客戶端系統(tǒng)的無線網(wǎng)卡(支持802.11b/g)連接無線局域網(wǎng)絡,將硬盤中的錄像文件以無線的方式,上傳到服務器中進行保存。

  (5)用戶控制部分:系統(tǒng)設計功能按鍵,分別連接到支持中斷的GPIO口上,用戶通過按鍵選擇方式,方便地對視頻監(jiān)控進行控制。

3 無線車載視頻監(jiān)控的軟件設計

  無線車載視頻監(jiān)控的軟件部分主要包括:

  (1)內(nèi)核及驅動部分

  系統(tǒng)使用Linux 2.6.11內(nèi)核作為系統(tǒng)的內(nèi)核,通過make menuconfig命令,根據(jù)用戶需要配置合適的內(nèi)核和驅動,生成內(nèi)核文件鏡像。設備驅動程序與系統(tǒng)硬件緊密相關,通過修改和調(diào)試后模塊化的集成于內(nèi)核之中。所涉及到的驅動程序包括用戶按鍵驅動、攝像頭驅動、LCD/VGA顯示驅動、硬盤驅動、播放器相關的MAE驅動和與無線傳輸相關的無線網(wǎng)卡驅動等。在此著重介紹系統(tǒng)攝像頭驅動的關鍵部分。

  在攝像頭驅動中,定義數(shù)據(jù)結構cim_cmos_cam-era_config對攝像頭設備進行描述:

  

基于Au1200的無線車載視頻監(jiān)控的實現(xiàn)

  通過上述數(shù)據(jù)結構,可以有效地描述攝像頭設備的各種參數(shù)。其中,config_cmd是一個十六進制的數(shù)組,對應不同工作模式的攝像頭配置攝像頭寄存器。

  驅動程序為上層應用提供了API接口,通過對應file_operations數(shù)據(jù)結構中的各個成員函數(shù)進行系統(tǒng)調(diào)用,在上層程序中,利用函數(shù)調(diào)用,讀取驅動中fileoperations的相應成員函數(shù)指針,完成對應函數(shù)功能。

  在系統(tǒng)的CIM接口的驅動程序中做如下定義:

  

基于Au1200的無線車載視頻監(jiān)控的實現(xiàn)

  其成員函數(shù)分別完成了與Au1200 CIM接口相連攝像頭設備的打開、控制、讀寫、映射以及釋放等基本功能。例如通過ioctl操作對攝像頭進行配置:

  

基于Au1200的無線車載視頻監(jiān)控的實現(xiàn)

  (2)庫與協(xié)議棧部分

  為了支持上層應用程序的運行,軟件系統(tǒng)中還必須包含眾多與之相關的函數(shù)庫和協(xié)議棧。其中,主要包括了與系統(tǒng)運行相關的基本函數(shù)庫,與音視頻編解碼相關的音視頻編碼庫,與用戶界面相關的Qtopia庫以及各種接口協(xié)議組成的協(xié)議棧。

(3)應用層部分

  視頻監(jiān)控的軟件流程圖如圖4所示。啟動攝像頭后,將采集到的視頻數(shù)據(jù)映射到內(nèi)存中。通過輸出控制,選擇視頻數(shù)據(jù)的流向。其中,數(shù)據(jù)處理部分主要涉及與ffmpeg相關的視頻壓縮處理。

  

視頻監(jiān)控的軟件流程圖

  (4)用戶控制部分

  系統(tǒng)采用Qtopia-core-opensource-4.2.2開發(fā)用戶界面。由于采用按鍵控制的方式,需要將按鍵驅動程序添加到QT庫中。通過中斷的方式,可以捕獲按鍵信號,并通過QT中的信號與槽的機制控制信號傳輸,使得當每個按鈕被按下時,觸發(fā)用戶程序中的某個函數(shù),并將相應的信號量傳遞出去,從而實現(xiàn)對整個系統(tǒng)的控制。

  4 基于ffmpeg的軟壓縮方法

  ffmpeg是一個開源免費的軟件,它提供了錄制、轉換以及流化音視頻的完整解決方案。使用ffmpeg軟壓縮的方式,不增加系統(tǒng)額外的硬件開銷,對采集到的視頻數(shù)據(jù)進行實時壓縮。在視頻處理應用程序的編寫過程中,需要按照ffmpeg定義的數(shù)據(jù)結構來描述視頻數(shù)據(jù),調(diào)用ffmpeg中的各種庫函數(shù),將攝像頭采集到的視頻數(shù)據(jù)按照設定的格式進行壓縮,并存成視頻文件,其處理流程如圖5所示。

  

基于Au1200的無線車載視頻監(jiān)控的實現(xiàn)

  其中包括:

  (1)ffmpeg初始化:定義與視頻處理相關的數(shù)據(jù)結構AVFormatContext,AVOutputFormat,AVStream,AVCodecContext,AVCodec,AVFrame,AVPicture等,并通過av_register_all(),av_alloc_format_context()等函數(shù)初始化相應的數(shù)據(jù)結構。

  (2)壓縮參數(shù)設置:主要涉及到視頻壓縮的相關參數(shù),如幀率、視頻分辨率、編碼類型等,通過av_set_parameters()函數(shù)進行設置。

  (3)圖像格式轉換和視頻數(shù)據(jù)填充:按照視頻監(jiān)控要求,利用img_convert()等函數(shù)對圖像格式進行轉換,并將轉換后的視頻數(shù)據(jù)通過avpicture_fill(),fill_yuv_image()等函數(shù)填充到AVPicture數(shù)據(jù)結構中,以供編碼器使用。

  (4)ffmpeg視頻編碼:利用avcodec_encode_rid-eo(),av_rescale_q()等函數(shù),調(diào)用ffmpeg編碼庫進行視頻編碼。

  (5)文件存儲操作:利用av_write_header(),av_write_frame(),av_write_trailer()等函數(shù)將壓縮后的視頻數(shù)據(jù)寫入指定文件中。

  (6)采集結束:采集結束后,利用avcodec_close(),av free()等函數(shù)釋放內(nèi)存資源,退出程序。

  ffmpeg提供功能豐富的音視頻函數(shù)庫,包括libav-codec,libavformat,libavdevice,libavfilter,libavutil和libswscale等,可為用戶提供許多音視頻處理相關的操作。系統(tǒng)應用程序中調(diào)用到的ffmpeg相關函數(shù)主要依賴libavformat庫(支持所有的普通音視格式的解析器和產(chǎn)生器的庫)和libavcodec庫(具有高效、高可


上一頁 1 2 下一頁

評論


相關推薦

技術專區(qū)

關閉