陳續,劉國巍
(安徽理工大學 電氣與信息工程學院,淮南 232001)
Cortex-A8和H.264的無線視頻監控系統設計
陳續,劉國巍
(安徽理工大學 電氣與信息工程學院,淮南 232001)
設計了一種基于Cortex-A8和H.264編碼的無線視頻監控系統。系統包含視頻監控PC客戶端、無線傳輸網絡和視頻采集端。視頻采集端采用基于ARM Cortex-A8內核的SP5V210芯片作為中央處理器,并構建Linux系統對視頻圖像進行采集、H.264編碼和無線傳輸,已編碼壓縮的圖像數據通過實時傳輸協議RTP傳輸到視頻監控PC客戶端進行解碼和顯示。該系統具有組建快捷、靈活性強等特點,能夠穩定地運行且滿足設計要求,在安防系統和緊急救援系統中有著很好的應用前景。
視頻監控系統;WiFi;SP5V210;H.264編碼
隨著現代科學技術和居民生活水平的提高,以及人們對安全問題的日益重視,視頻監控系統在緊急救援和安防系統中得到了廣泛應用。無線技術的發展解決了傳統有線的布線復雜,網絡結構不靈活等技術問題。無線技術對于特殊監控環境有著很好的親和性,且移動通信網和無線局域網的快速建設為視頻監控系統的設計提供了技術支持,其中無線局域網WLAN的組建快捷、靈活性強、受環境限制小、方便網絡重組和擴展。
國際電信聯盟對于視頻編碼壓縮制定了H.264/AVC視頻編碼壓縮標準,H.264加強了對 IP、移動網絡的丟包、誤碼情況處理,保證了在不同信道中進行傳輸的視頻圖像質量。隨著H.264編碼技術的提出與應用,大大提高了視頻數據的壓縮率,減少傳輸時所用的網絡帶寬,并促進了無線網絡的發展,同時H.264編碼的網絡傳輸提取層設計,可以使視頻數據在不同網絡里進行傳輸且適應性良好。
嵌入式芯片功能的增強和開源Linux操作系統的成熟使得基于嵌入式系統的視頻監控系統具有更好的穩定性和實時性,結合無線網絡技術使系統具有成本低、組網便捷和實際應用性強等優點,可以廣泛地應用于民用與工用安防系統。
本文將WiFi技術、圖像壓縮技術與基于嵌入式視頻監控系統相結合,采用嵌入式ARM Cortex-A8高性能處理器芯片SP5V210和Linux操作系統,將COMS攝像頭采集的視頻流經H.264編碼壓縮后由無線WiFi網絡傳輸到監控端,通過PC監控端的FFMPEG模塊和SDL播放模塊完成監控視頻數據的實時顯示。
系統采用ARM Cortex-A8內核的SP5V210芯片作為視頻采集端的中央處理器,該處理器運行穩定時主頻可達1 GHz,具有MMU功能、64位內部總線架構、可擴展的DRAM內存接口、1 G的NAND Flash和DDR2、3通道I2C總線接口、4個USB接口、4路 HS-MMC/SD/SDIO/接口等。同時其內部集成MFC視頻編解碼器,支持多格式編解碼包含MPEG-4/H.264編碼,且Cortex-A8處理器應用NEON信號處理擴展指令集提高了H.264和MP3等媒體編碼效率。工作流程為:首先OV3640攝像頭采集圖像信息并通過I2C總線與SP5V210處理器通信,處理器通過內部集成的MFC多格式編碼器將圖像信息進行H.264編碼壓縮,視頻圖像再基于USB無線網卡構建的WLAN網絡和實時傳輸協議RTP發送給視頻監控PC客戶端,由客戶端進行解碼和顯示。系統的軟件結構包含應用層程序、設備驅動程序和嵌入式Linux操作系統。系統工作時會先執行Bootloader引導加載程序進行硬件設備初始化并引導加載Linux 2.6.35內核,再加載設備驅動程序(包括攝像頭驅動、WiFi驅動、Nand Flash驅動等),最后為用戶區應用層程序的執行,其中包含視頻采集模塊、H.264編解碼模塊、WiFi無線傳輸模塊和RTP實時傳輸協議模塊。系統整體框圖如圖 1所示。

圖1 系統整體框圖
2.1 視頻數據采集
在視頻采集端,原始視頻數據的采集是通過OV3640圖像傳感器模塊完成,該攝像頭支持300萬像素并支持輸出YUV420圖像數據,SP5V210處理器通過I2C總線訪問與修改OV3640內部寄存器來控制攝像頭功能。
在Linux操作系統中,通過應用Video4Linux(V4L)來實現視頻采集設備的各種功能。在Linux內核中定義了視頻設備的統一接口V4L,由統一的API接口庫函數控制視頻設備各種功能。其中,V4L2是V4L的升級版,具有更好的兼容性和擴展性。V4L2采集視頻信息的流程為:通過openVideo()函數先打開視頻采集設備文件;初始化設備信息包括獲得視頻設備支持的功能屬性和設置其采集視頻格式;向內核申請幀緩存內存空間,并將其映射到用戶空間,開始發送采集信號;讀取視頻緩存幀數據,可以根據需求進行數據的處理;發送采集停止信號,釋放內存映射,關閉視頻設備。數據采集流程如圖2所示。

圖2 數據采集流程
2.2 H.264編碼壓縮
視頻圖像畫面用 4:2:0格式存儲,每幀的數據大小為1.2 Mb,對于25~30 fps的實時硬件編碼,其碼流將達到了 30~36 Mbps,無線網絡帶寬和存儲空間難以承受,需采用H.264壓縮編碼技術將大數據量的視頻數據進行壓縮。SP5V210內部集成了多格式的視頻編解碼器(MFC),支持H.264的硬件編解碼且速度最高可達到30 fps,可以很好地滿足系統對視頻數據壓縮和處理速度的要求。采用MFC硬件編解碼模塊完成視頻數據編解碼的程序時,既可以調用MFC編解碼中的API庫函數,又可以采用MFC中的I/O接口函數,MFC編解碼中的底層驅動接口封裝實際上就是API庫函數。SP5V210的MFC編解碼軟件架構如圖3所示。

圖3 MFC編解碼軟件架構
通過硬件編解碼模塊 MFC的API接口函數實現 H.264 視頻編碼壓縮,具體的流程為:
① 建立H.264編碼器實例,設置MFC編碼器的參數并對其進行初始化設置。
② 獲取編碼器的輸入緩沖區地址,讀取視頻數據,發送到編碼器的輸入緩沖空間。
③ 進行H.264壓縮編碼,獲取編碼后的輸出緩沖區,并對編碼數據進行相應處理。
④ 判斷編碼是否結束,結束則釋放編碼器的資源,編碼器關閉,否則進入第2步循環運行。
2.3 視頻數據無線傳輸
系統的傳輸網絡是通過USB無線網卡構建無線局域網的方式完成,利用無線的信道來傳輸編碼后的視頻數據,WiFi(Wireless Fidelity)通信網絡標準分別支持IEEE 802.11g、IEEE 802.11b和IEEE 802.11a協議,具有傳輸速率高(11~54 Mbps)、安裝便捷和受環境限制小等優點。
USB無線網卡通過USB接口與SP5V210通信,需要完成USB設備、無線網卡設備的驅動和移植,無線網卡設備驅動為應用層提供協議棧接口,在下層通過USB總線訪問無線網卡設備寄存器。無線網卡在Linux操作系統上的移植,先要下載對應驅動工具包并將其復制到根目錄下完成驅動,通過串口工具輸入scan-wifi進行搜索無線網絡信號,再通過start-wifi命令打開無線網絡并建立連接。
無線網絡傳輸視頻數據時,必須要遵循約定的網絡傳輸協議。一般常用的網絡傳輸協議有RTP/RTCP、TCP/IP和UDP ,本系統中視頻數據的傳輸是基于 RTP/RTCP實時傳輸協議的,RTP/RTCP協議實現的開源庫有JRTPLIB、LIBRTP、ORTP等,本文采用基于C++的開源庫JRTPLIB,支持Linux和Windows操作系統平臺,且操作便捷,封裝性好。為了實現基于RTP/RTCP實時傳輸協議的視頻數據傳輸,先要完成JRTPLIB的交叉編譯和到Linux系統平臺移植等工作。
采用JRTPLIB開源庫中的接口函數完成無線視頻數據傳輸的具體流程如下:
① 初始化并生成RTP會話。采用JRTPLIB開源庫傳輸視頻數據前,要先創建一個RTPSession實例用來代表RPT會話,并利用RTPSession Params對象設置時間戳的單位,再調用RTPSession實例中的成員函數Create()生成RPT會話并同時初始化。
② 設置接收端目標地址。在生成RTP會話后傳輸視頻數據前,首先調用RTPSession實例中的成員函數AddDestination()來設置數據發送時的目標地址(接收端地址)。在RTP協議中可以根據需要設置指定多個目標地址于同一會話中,其中函數SetDefaultPayloadType(96)用于設定RPT負載H.264編碼數據; voidClearDestinations()用于清除所有的地址;函數DeleteDestination()為刪除指定地址。
③ 發送視頻數據到目標地址。設置好數據發送目標地址之后,使用 RTPSession實例中成員函數SendPacket(),將編碼好的H.264數據包發送到一個或多個目標地址。由于每一幀視頻的數據量較大,RTP數據包以分片傳輸方式傳輸以保證視頻數據的可靠性。SendPacket()函數中,mark為1代表該RTP包為完整包,為0代表分割包。
④ RTP會話結束。調用BYEDestroy()函數結束此次RTP會話。
接收端將分片數據包重新組裝成為幀,得到H.264格式的壓縮編碼視頻,交付給視頻監控PC客戶端處理,這里視頻監控PC客戶端的主要功能為視頻數據的重新解壓、播放顯示和處理等。系統采用FFMPEG方案和SDL技術來實現監控視頻數據的解壓和顯示。
3.1 視頻數據解壓
FFMPEG是一套開源的音頻流和視頻流方案,支持音視頻編解碼等功能,為免費軟件。FFMPEG方案的開發與使用是在Linux系統平臺下的,但隨著發展現已支持Windows等多種操作系統。FFMPEG方案支持H.264、MPEG4、3GP等多種常見格式的視頻編解碼,功能全面且性能強大。系統采用FFMPEG方案主要完成客戶端對已編碼視頻數據的接收和視頻解碼工作。
在Windows下安裝好FFMPEG開源庫開發環境,再進行視頻數據的解碼工作,其中FFMPEG庫中的主要功能函數和數據結構有:
① AVCodecContext()結構體,用于編碼器參數信息描述,如視頻的采樣率、視頻的寬和高等信息;
② AVPacket()結構體,緩沖解碼前視頻數據;
③ AVFrame()結構體,存儲視頻數據解碼后的數據幀;
④ av_resister_all()功能函數,用來注冊全部解碼器;
⑤ avcodec_find_decoder(),搜索解碼器,如H.264格式解碼器;
⑥ avcodec_decode_video(),解碼接收到的視頻幀;
⑦ avcodec_alloc_frame(),新建AVFrame結構體。
3.2 視頻播放顯示
SDL是一個跨平臺的多媒體開源開發庫,支持多媒體播放器、游戲開發等,可以運行在多種操作系統上(如Windows、Linux等),兼容性良好。SDL開源庫包含音頻、視頻和視窗管理等多個子系統。本文采用SDL開源庫中的視頻子系統,其主要功能是將FFMPEG解碼后的視頻數據進行顯示與播放。
SDL開源庫將解碼后的視頻數據轉化成對應的YUV格式,在屏幕上顯示其各個分量,完成視頻的輸出。SDL開源庫中的主要的數據結構體和功能函數為:SDL_Overlay()結構體,為YUV格式圖像信息的覆蓋結構;SDL_Surface()結構體,為SDL中圖像信息顯示的基本區域;SDL_Init()功能函數,作用是初始化SDL中圖像特性;SDL_CreateYUVOverlay()功能函數,創建SDL_Overlay()結構,設置尺寸參數等;SDL_DisplayYUVOverlay()函數,用來播放監控視頻圖像,即SDL_Overlay()結構體中存儲的圖像信息。
通過FFMPEG和SDL技術中的主要結構體以及功能函數完成接收端的視頻解碼和播放任務,主要的工作流程如圖4所示。

圖4 視頻圖像解碼與顯示
本文設計了一種基于 Cortex-A8的無線視頻監控系統,采用高性能的ARM Cortex-A8芯片SP5V210、300萬像素的COMS攝像頭、USB無線網卡以及PC機完成了系統的硬件搭建,利用低碼流和容錯能力強的H.264壓縮編碼技術進行視頻數據編碼,滿足了無線傳輸要求,且基于RTP/RTCP網絡傳輸協議提高了視頻傳輸的實時性。在視頻監控PC客戶端應用開源的FFMPEG和SDL技術實現了監控視頻圖像的解碼和播放。

[1] 盧靈,周賢軍.基于WiFi的嵌入式視頻監控系統設計[J].電視技術,2013,37(1):157-160.
[2] 江俊杰,王志明.基于SDL的H.264流媒體播放系統[J]. 計算機系統應用,2013,22(12):51-54.
[3] 徐霖.基于ARM11的嵌入式無線視頻監控系統的研究與實現[D]. 武漢:武漢科技大學,2012.
[4] 胡聰,周甜,唐璐丹.基于FFMPEG的跨平臺視頻編解碼研究[J].武漢理工大學學報,2011,33(11):139-142.
[5] 蔡小偉.基于ARM Cortex-A8的嵌入式視頻監控系統設計[D]. 南昌:南昌大學,2013.
[6] 李雄滔,陸奎.基于ARM嵌入式礦井遠程監控系統的設計[J].煤礦機械,2013,34(8):282-284.
[7] 李校林,劉利權,張杰.基于RTP的H.264視頻流實時打包傳輸的研究[J]. 計算機工程與科學,2012,34(5):168-171.
[8] 孫繼平.現代化礦井通信技術與系統[J].工礦自動化,2013,39(3):1-5.
[9] 許剛.基于ARM11的嵌入式視頻采集系統設計[J].測控技術,2013,32(12):37-40.
陳續(碩士研究生),研究方向為智能信息處理與通信系統;劉國巍,研究方向為信號與信息處理技術。

⑤ 預留其他外部接口,可以支持其他的傳感器。

參考文獻
[1] 汪巍巍. 多生理參數無線遠程醫療健康監護系統研究 [D]. 成都:電子科技大學, 2013:11-100.
[2] 王春飛,石江宏.美軍單兵生命體征監測系統中的無線傳感網絡[J]. 醫療衛生裝備, 2007, 28(11): 34-35.
[3] 陳海金, 張躍. 遠程多參數動態實時監護儀設計[J]. 計算機工程與設計, 2013, 33(12): 4501-4508.
[4] 楊林, 張永魁. 基于 ZigBee 的多生理參數測量與分析系統的設計[J]. 中國醫療設備, 2012, 27(2): 25-27,43.
[5] Iddan G , Meron G, Glukhovsky A, et al P.Wireless capsule
endoscopy[J]. Nature, 2000, 405 (6785): 417.
[6] 王微微, 劉華. 膠囊內窺鏡圖像采集系統設計[J]. 測控技術, 2013, 32(8): 25-28.
[7] 隋紹勇, 鄭維廣, 張振邦. 基于 STM32F103 和 nRF24L01 的近程無線數傳系統設計[J]. 電子元器件應用, 2010, 12(12): 15-17.
[8] TI.CC3000無線網絡解決方案技術文檔[EB/OL].[2014-10]. http://www.ti.com.cn/product/cn/CC3000/technicaldocuments.
[9] TI.CC3000 Smart Config[EB/OL]. [2014-10].http://processors.wiki.ti.com/index.php/CC3000_Smart_Config.
[10] Van Every S. Introduction to Android Imaging[M].Pro Android Media. Apress, 2009: 1-22.
袁偉釗(碩士研究生),主要研究方向為遠程醫療技術;高園園(講師),主要研究方向為醫學圖像處理;呂慶文(教授),研究方向為計算機應用技術。
(責任編輯:楊迪娜 收稿日期:2014-10-14)
Wireless Video Monitoring System Based on Cortex-A8 and H.264
Chen Xu,Liu Guowei
(School of Electrical and Information Engineering,Anhui University of Science and Technology,Huainan 232001,China)
A wireless video monitoring system based on Cortex-A8 and H.264 encoding is designed,which is composed of the PC client for video surveillance,the wireless network and the video acquisition terminal.In the system,the video acquisition terminal adopts SP5V210 chip as the central processor which based on ARM Cortex-A8 core,The Linux system is established for the video image acquisition,H.264 encoding and the wireless transmission,then the encoded and compressed image data is sent to the PC client of video surveillance through real-time RTP transport protocol.The system works smoothly and can set up fastly and flexibly.It can meet the requirements of design,which would be widely used in security system and emergency rescue system.
video monitoring system;WiFi;SP5V210;H.264 encode
TP393
A
?迪娜
2014-09-18)