田時舜,章明朝,周 躍,閆 豐,隋永新
(1.中國科學院 長春光學精密機械與物理研究所 應用光學國家重點實驗室,吉林 長春130033;2.中國科學院大學 大珩學院,北京100049)
視頻監(jiān)控系統(tǒng)目前已發(fā)展到基于IP網絡的數字視頻監(jiān)控系統(tǒng)。文獻-[1]中基于DM6446的網絡服務器能滿足上述行業(yè)的視頻監(jiān)控,但它使用DSP 處理器來實現視頻壓縮算法,使得DSP的負載較高,系統(tǒng)可擴展性不高,且編碼能力有限,最高只能支持到D1分辨率,應用有一定的局限性。在森林火災監(jiān)控、機器故障檢測、氣象、醫(yī)學等需要對視頻進行相關處理的應用領域中,DM6446 略顯不足,相比而言,DM8148性能更好、可擴展性更高。DM8148含有兩個可配置的視頻采集端口,可以完成至多四路視頻的采集;配置的HDVICP2 高清視頻協(xié)處理器中集成有H.264等主流視頻壓縮算法,最高可支持1080P60Hz的實時H.264視頻編碼;高性能DSP C674x能很好地運行相應的圖像處理算法[3],可以用于對視頻信息的提取和圖像的融合。本文設計了一種基于DM8148的高性能、可擴展的嵌入式網絡視頻服務器,最高能支持1080P60Hz的實時視頻監(jiān)控,并測試完成了720P 高清視頻信號的采集、壓縮,以及RTP實時網絡傳輸。系統(tǒng)集成度高,可擴展性強,具有廣泛的應用前景。
本文采用TI公司的TMS320DM8148芯片設計了一款網絡視頻服務器,系統(tǒng)由視頻采集模塊,視頻處理模塊,視頻壓縮模塊和網絡傳輸模塊構成。使用的壓縮標準為H.264,網絡傳輸協(xié)議為RTP協(xié)議。
ARM 子系統(tǒng)運行Linux操作系統(tǒng),負責系統(tǒng)的總體控制及網絡傳輸,VPSS負責視頻的采集,HDVICP2用于實現視頻的編碼工作,DSP 負責相應的圖像處理算法,Syslink/IPC用于完成處理器之間的數據通信,解碼芯片采用TVP7002.VPSS采集到一幀數據后傳遞給DSP視頻處理模塊進行必要的視頻處理,處理后的數據被傳遞至編碼模塊,編碼模塊通過調用HDVICP2實現H.264編碼,采用RTP實時傳輸協(xié)議將壓縮后的視頻數據發(fā)送至客戶端。系統(tǒng)總體框架如圖1所示。
圖1 系統(tǒng)框架
軟件平臺設計包括本系統(tǒng)各功能模塊的具體實現,是本設計的核心內容。
本設計中,有視頻采集,視頻壓縮及網絡傳輸多個任務同時運行,這就需要系統(tǒng)同時處理多個任務。在Linux操作系統(tǒng)下可以選擇多進程或者多線程設計,但線程之間的切換需要操作系統(tǒng)做的工作比進程之間的切換少的多,且同一個進程內的線程之間共享全局變量,文件描述符,信號處理函數等,這樣對系統(tǒng)資源的占用也相對較小[4],故本文采用多線程設計,線程之間使用管道PIPE進行數據傳遞。主線程用于系統(tǒng)的控制,為各功能模塊分別創(chuàng)建一個線程。
V4L2是Linux內核中關于視頻設備的內核驅動,它為Linux中視頻設備訪問提供了通用接口[5]。DM8148處理器的視頻采集通過VPSS模塊來完成。具體架構如圖2所示。
圖2 VPSS結構
最底層是VPSS硬件采集接口,M3VPSS Firmware是運行在Cortex-M3 控制器上的基礎控件,BIOS Notify Library與Kernel Notify Library是Syslink Library的一部分,用于完成A8 與M3 之間的通信,VPSS FVID2Library是TI提供的一個硬件抽象層,用于控制M3控制器上運行的固件[6]。同時也為上層驅動 (V4L2)提供一套API,FBDEV 則是用于管理圖片顯示的幀緩沖區(qū)的模塊,V4L2 通過調用VPSS FVID2Library完成對硬件的訪問,應用程序通過調用V4L2接口即可完成視頻的采集工作。視頻采集過程如圖3所示。
DM8148有兩個24bit的視頻輸入端口,每個端口至多可采集雙通道的8bit視頻,即系統(tǒng)最多可以完成4路視頻的采集,能很好的滿足系統(tǒng)的要求。
本文中配置VIN0 為單通道的16bit YCbCr視頻采集模式,解碼芯片使用TVP7002,將解碼芯片信息加入內核,以下是關鍵內核配置信息:
圖3 V4L2視頻采集流程
Linux內核通過相應的I2C 地址去配置對應的解碼芯片。再將V4L2標準的解碼芯片驅動編譯成內核模塊加載到系統(tǒng)中,就可在應用程序中通過V4L2 接口完成視頻的采集。
在一些特定的視頻監(jiān)控領域還需要對所采集的視頻進行一些必要的處理,在引言提到,此處不再贅述。
編解碼引擎 (codec engine)是TI達芬奇處理器的軟件框架[7]。在此框架下,DSP 可集成多個算法,成為算法服務器,ARM 應用軟件作為客戶端動態(tài)地請求DSP 創(chuàng)建算法任務。系統(tǒng)框架如圖4所示。
圖4 Codec Engine框架
算法必須符合xDM 標準,VISA API為這些算法提供了接口,將這些算法集成入一個算法服務器,ARM 應用程序就可以通過相同的VISA API來調用相應的DSP 算法。當ARM 應用程序調用某個算法時,算法服務器將創(chuàng)建此算法實體。
本文中將視頻處理算法封裝到DSP 算法服務器中,在ARM 端應用程序中創(chuàng)建視頻處理線程,從視頻采集線程中獲取原始數據,通過Codec Engine調用DSP視頻處理算法對視頻進行處理,并將數據傳遞至視頻壓縮線程。
H.264算法是由國際電信聯盟標準化組織的視頻圖像專家組和國際標準化組織的運動圖像專家組共同組成的聯合視頻組所開發(fā)的最新的視頻編碼標準,相對于更早的MPEG-x和H.263視頻壓縮算法,H.264算法提供了更高的編碼壓縮效率和良好的網絡適應性,具有低碼率,容錯能力強,應用目標范圍較寬等特點[8]。
HDVICP2支持目前大部分編解碼和變換編碼標準,能夠完成分辨率高達1080P60Hz的H.264實時視頻壓縮。
HDVICP2中的視頻壓縮算法通過OpenMax API來調用,OpenMax程序有多個組件組成,每個組件負責特定的功能,每個組件由一到多個不等的端口,組件之間通過端口進行數據傳輸。在本系統(tǒng)中只用到編碼組件,視頻壓縮組件通過其輸入端口從圖像處理線程獲取YUV 視頻數據,將壓縮后的H.264 碼流通過輸出端口輸出存儲至SD 卡,并傳遞給網絡傳輸線程。編碼流程如圖5所示。
H.264數據流的NAL支持多種基于包的有線或者無限網絡傳輸,為了滿足基于IP網絡的視頻傳輸,互聯網工程組提出了一些音視頻數據傳輸的協(xié)議,如RTP/RTCP、RTSP、RSVP、SIP等。本文中考慮使用RTP/RTCP協(xié)議。
基于UDP協(xié)議的實時傳輸協(xié)議RTP更加側重于數據傳輸的實時性[9]。RTP協(xié)議提供的服務包括時間載量標識、數據序列、時間戳、傳輸控制等等。實時傳輸控制協(xié)議RTCP主要是用來進行流量控制和擁塞控制,RTP通過RTCP獲取數據傳輸相關的控制信息,RTP傳輸過程如圖6所示。
圖5 編碼流程
圖6 RTP傳輸過程
通常IP網絡的最大傳輸單元MTU 為1500字節(jié),當傳輸包的大小大于MTU 時,網絡層會將其進行分割,由于UDP協(xié)議并不保證傳輸可靠,一個數據包的丟失會影響同一個原始包的其它分割包,這樣會降低傳輸效率。
對此,RFC3984標準規(guī)定了對H.264數據流進行RTP打包的策略,分為單一NAL打包模式、組合打包模式和分片打包模式。MTU 為1500字節(jié),IP/UDP/RTP/協(xié)議頭的總長度至少占40字節(jié),所以RTP 的最大載荷為1460,本設計中設定的閾值為1360字節(jié)。由于本系統(tǒng)中視頻源的分辨率較高,長度小于1360字節(jié)的幀極少,為了降低程序的復雜度,故未使用組合打包模式[10]。
H.264的RTP打包框架如圖7所示。
圖7 RTP打包框架
采用720P高清視頻源對系統(tǒng)進行測試,視頻經過壓縮編碼后通過網絡傳輸至PC 客戶端,使用VLC 播放器進行播放。效果如圖8所示。
圖8 VLC播放效果
使用Wireshark工具進行網絡抓包效果如圖9所示。
本文在DM8148的基礎上設計了一款高性能的嵌入式網絡視頻服務器,將監(jiān)控視頻的分辨率提高到了720P,最高可支持1080P;此外系統(tǒng)的可擴展性強,針對有視頻處理需求的應用可以將相關的圖像處理算法移植到DSP處理器中;本設計至多可擴展四通道采集,能很好的滿足有多通道視頻監(jiān)控需求應用的要求;此外,可進一步開發(fā)自主的顯示界面,并通過網絡協(xié)議實現對遠程系統(tǒng)的控制,如調節(jié)相機曝光量、聚焦等等,增加系統(tǒng)的集成度。
圖9 網絡抓包
[1]CHEN Xiao,ZHANG Xuejie.Research of network video server design technology based on DAVINCI dual-core chips[J].Journal of Yunnan University (Natural Sciences Edition),2009,31 (S1):122-127 (in Chinese). [陳曉,張學杰.基于DAVINCI雙核芯片的網絡視頻服務器的設計技術研究 [J].云南大學學報 (自然科學版),2009,31 (S1):122-127.]
[2]LAI Haijun.Design of dual-channel video capture and pre-processing system based on FPGA [D].Nanjing:Nanjing University of Science and Technology,2013 (in Chinese). [來海軍.基于FPGA 的雙通道視頻采集與預處理系統(tǒng)設計 [D].南京:南京理工大學,2013.]
[3]WANG Jingxiong.Software development of video processing system based on DM8148processor[D].Hangzhou:Zhejiang University,2013 (in Chinese).[王靖熊.基于DM8148處理器的視頻處理系統(tǒng)軟件研發(fā) [D].杭州:浙江大學,2013.]
[4]Neil Matthew,Rick Stones.Beginning Linux programming [M].4th ed.New York:Wiley Publishing,2007:495-497.
[5]LIU Sheng,ZHAO Jingjing,FAN Xiuli.The embedded video surveillance system based on V4L2 [J].Microcomputer Application,2011,32 (1):37-42 (in Chinese). [劉升,趙晶晶,范秀麗.基于V4L2的嵌入式視頻監(jiān)控系統(tǒng) [J].微計算機應用,2011,32 (1):37-42.]
[6]YANG Zhenyong,WANG Yanjie,SUN Haijiang,et al.Design and implementation of SOC high definition video processing system based on TMS320DM8168 [J].Chinese Journal of Liquid Crystals and Display,2013,28 (5):764-769 (in Chinese). [楊振永,王延杰,孫海江,等.基于TMS320DM 8168的SOC高清視頻處理系統(tǒng)的設計與實現 [J].液晶與顯示,2013,28 (5):764-769.]
[7]SONG Jintao.Research and implementation of video processing platform based on Codec Engine software framework [D].Chengdu:University of Electronic Science and Technology of China,2013 (in Chinese).[宋金濤.基于Codec Engine軟件框架的視頻處理平臺研究與實現 [D].成都:電子科技大學,2013.]
[8]ZHOU Qiang,FEI Zhangjun,WANG Qiang,et al.Design and development of H.264-based embedded network video server[J].Journal of Computer Applications,2010,30 (2):555-559 (in Chinese). [周強,費章君,王強,等.基于H.264的嵌入式網絡視頻服務器的設計與開發(fā) [J].計算機應用,2010,30 (2):555-559.]
[9]WANG Hongzhi,YU Haolin.Design of enbedded remote monitoring system based on ARM-Linux [J].Journal of Jilin University (Science Edition),2014,52 (1):103-107 (in Chinese).[王宏志,宇皓林.基于ARM-Linux遠程視頻監(jiān)控系統(tǒng)的設 計 [J].吉 林 大 學 學 報 (理 學 版),2014,52 (1):103-107.]
[10]JIANG Junjie,WANG Zhiming.Design of embedded video surveillance system based on X264 [J].Computer Engineering and Design,2013,34 (12):4199-4203 (in Chinese).[江俊杰,王志明.基于X264 的嵌入式視頻監(jiān)控系統(tǒng)設計[J].計算機工程與設計,2013,34 (12):4199-4203.]