李文峰, 路建通, 雷文禮, 白慧
(1.西安科技大學(xué) 通信與信息工程學(xué)院, 陜西 西安 710054; 2.延安大學(xué) 物理與電子信息學(xué)院, 陜西 延安 716000)
煤礦井下環(huán)境惡劣、地勢復(fù)雜[1-2],地面工作人員對煤礦井下環(huán)境進(jìn)行視頻監(jiān)控,可實(shí)時查看煤礦開采作業(yè)及人員工作現(xiàn)場情況[3]。目前,煤礦井下視頻傳輸系統(tǒng)大多是半數(shù)字化視頻傳輸系統(tǒng),系統(tǒng)采集前端主要采用CCD和CMOS圖像傳感器,輔助光源多采用LED紅外補(bǔ)光燈,低光照強(qiáng)度或黑暗環(huán)境下視頻畫面不清晰;視頻監(jiān)控信號以電纜方式傳輸,傳輸速率不穩(wěn)定、傳輸時延高,不能達(dá)到實(shí)時傳輸視頻的要求,布線傳輸受區(qū)域限制、費(fèi)用高;未采用統(tǒng)一的視頻接口標(biāo)準(zhǔn),兼容性較差[4-6]。
本文設(shè)計(jì)了一種礦用實(shí)時視頻傳輸系統(tǒng)。該系統(tǒng)采用MCCD圖像傳感器和960 nm紅外激光采集視頻數(shù)據(jù),數(shù)據(jù)經(jīng)H.264壓縮編碼后進(jìn)行RTP封裝,并通過流媒體服務(wù)器流化為RTSP視頻流,通過ONVIF標(biāo)準(zhǔn)將RTSP視頻流進(jìn)行封裝并通過網(wǎng)絡(luò)傳輸,可提高視頻清晰度、系統(tǒng)兼容性和傳輸速率穩(wěn)定性。
礦用實(shí)時視頻傳輸系統(tǒng)設(shè)計(jì)需實(shí)現(xiàn)以下功能:在低光照強(qiáng)度或黑暗環(huán)境下拍攝清晰視頻畫面;滿足本質(zhì)安全(以下簡稱本安)要求;支持ONVIF標(biāo)準(zhǔn)、UDP協(xié)議、RTP協(xié)議及RTSP協(xié)議,提高系統(tǒng)兼容性和視頻傳輸穩(wěn)定性。系統(tǒng)技術(shù)指標(biāo):傳輸速率≤10 Mbit/s;丟包率≤3.5%。
系統(tǒng)工作原理如圖1所示。系統(tǒng)采集前端采集的PAL制式模擬視頻信號經(jīng)視頻解碼模塊轉(zhuǎn)換為YUV數(shù)字信號,數(shù)字信號通過MFC(Multi Format Codec,多格式編碼器)編碼為H.264格式數(shù)據(jù),在此基礎(chǔ)上添加UDP報(bào)文頭進(jìn)行RTP封裝,然后通過Live555流媒體服務(wù)器進(jìn)行數(shù)據(jù)流化,對RTSP視頻流進(jìn)行ONVIF封裝,最后通Socket網(wǎng)絡(luò)編程實(shí)現(xiàn)實(shí)時視頻網(wǎng)絡(luò)傳輸功能。
圖1 礦用實(shí)時視頻傳輸系統(tǒng)工作原理Fig.1 Working principle of mine-used real-time video transmission system
礦用實(shí)時視頻傳輸系統(tǒng)主要由最小系統(tǒng)單元、低照度視頻采集單元、通信單元、本安型供電單元等組成,如圖2所示。該系統(tǒng)以S5PV210處理器為核心,其內(nèi)嵌Linux操作系統(tǒng),具有高達(dá)1 GHz的工作主頻,采用ARM7指令集,支持MPEG-1/2/4,H.263,H.264等格式視頻的編解碼。
圖2 礦用實(shí)時視頻傳輸系統(tǒng)硬件組成Fig.2 Hardware composition of mine-used real-time video transmission system
低照度視頻采集單元包括采集前端、輔助光源、視頻解碼模塊,其中采集前端采用MCCD圖像傳感器,輔助光源由960 nm紅外激光和光強(qiáng)度傳感器BH1750組成。在光照強(qiáng)度充足情況下,采集前端采集到PAL制式的模擬視頻信號,信號經(jīng)I2C通信總線配置的視頻解碼模塊TVP5150轉(zhuǎn)換為8 bit 4∶2∶2 ITU-R BT.656格式的YUV數(shù)字信號。當(dāng)光照強(qiáng)度低于處理器預(yù)先設(shè)置的光照閾值時,系統(tǒng)開啟960 nm紅外激光對采集前端進(jìn)行紅外補(bǔ)光。
通信單元包括串口和RJ45網(wǎng)口:串口用于打印系統(tǒng)參數(shù)并向S5PV210處理器燒錄Linux內(nèi)核、根文件系統(tǒng)、驅(qū)動及應(yīng)用程序;RJ45網(wǎng)口遵循TCP/IP通信協(xié)議,用于本地監(jiān)控顯示,以及將系統(tǒng)接入網(wǎng)絡(luò)實(shí)現(xiàn)遠(yuǎn)程監(jiān)控功能。
本安型供電單元主要由交流輸入、AC/DC轉(zhuǎn)換器、電源管理模塊及雙重限壓限流保護(hù)電路組成。電源管理模塊以MAX8903C為核心,實(shí)現(xiàn)電壓轉(zhuǎn)換功能并輸出2路電壓:采集前端和輔助光源所需的3.3 V驅(qū)動電壓;處理器外圍電路所需的5 V驅(qū)動電壓。雙重限壓限流保護(hù)電路采用2級串聯(lián)拓?fù)?,利用高電壓浪涌抑制器LTC4366對系統(tǒng)上電時產(chǎn)生的浪涌及負(fù)載端過流、過壓、短路等故障快速做出反應(yīng)。
視頻采集流程基于Linux內(nèi)核中V4L2驅(qū)動框架提供的API(Application Program Interface,應(yīng)用程序接口)通用函數(shù)接口實(shí)現(xiàn),如圖3所示。打開視頻設(shè)備文件后,通過ioctl函數(shù)調(diào)用V4L2框架提供的接口對視頻設(shè)備屬性進(jìn)行管理。為提高視頻采集效率,采用內(nèi)存映射方式進(jìn)行視頻采集[7]。
圖3 視頻采集流程Fig.3 Video acquisition flow
S5PV210處理器自帶MFC硬件編碼功能,采集到的視頻數(shù)據(jù)在進(jìn)行H.264壓縮時通過調(diào)用MFC的接口函數(shù)實(shí)現(xiàn)。MFC支持linear mode和title mode 2種幀內(nèi)存格式,由于在源碼設(shè)計(jì)上title mode編碼格式較復(fù)雜,所以選用linear mode來編碼。首先打開YUV數(shù)據(jù)源文件,將獲取的視頻文件頭寫入H.264文件中,然后將YUV幀分量保存到MFC輸入緩存中并轉(zhuǎn)換成NV12格式,最后將其進(jìn)行編碼并保存。
ONVIF接口模塊設(shè)計(jì)主要通過gSOAP工具實(shí)現(xiàn)[8-10],流程如圖4所示。從ONVIF官網(wǎng)或本地獲取3個WSDL文檔(ws-discovery.wsdl,devicemgmt.wsdl和media.wsdl),用gSOAP工具生成的wsdl2h應(yīng)用程序在Linux平臺下對WSDL文檔進(jìn)行編譯,生成ONVIF頭文件onvif.h,再通過gSOAP下的soapcpp2對頭文件進(jìn)行交叉編譯,生成RFC框架代碼(soap C.c,soap H.h,soap Stub.h)和客戶端/服務(wù)器端(Client/Server,C/S)代碼(soap Server.c,soap Client.c),最后調(diào)用相關(guān)API功能函數(shù)實(shí)現(xiàn)ONVIF接口模塊。
圖4 ONVIF接口模塊設(shè)計(jì)流程Fig.4 ONVIF interface module design flow
H.264格式視頻網(wǎng)絡(luò)傳輸流程如圖5所示。UDP數(shù)據(jù)傳輸時延小、時效性較高,因此在H.264碼流數(shù)據(jù)前加8 byte的UDP報(bào)文頭并進(jìn)行RTP封裝[11-13],然后通過RTSP_live模塊獲取RTSP實(shí)時視頻流,并將本地RTSP實(shí)時視頻流與ONVIF接口模塊進(jìn)行封裝,最后通過Socket網(wǎng)絡(luò)編程實(shí)現(xiàn)實(shí)時視頻流網(wǎng)絡(luò)傳輸。
圖5 視頻網(wǎng)絡(luò)傳輸流程Fig.5 Video network transmission flow
3.3.1 RTSP實(shí)時視頻流獲取
視頻傳輸線程運(yùn)行環(huán)境主要包括任務(wù)調(diào)度器、RTSP客戶端創(chuàng)建及用戶驗(yàn)證。RTSP客戶端創(chuàng)建后,必須監(jiān)聽OPTIONS消息是否發(fā)送,當(dāng)監(jiān)聽到該消息時運(yùn)行RTSP_live模塊消息交互時序,如圖6所示。Live555服務(wù)器被RTSP_live調(diào)用時,按照消息交互時序進(jìn)行數(shù)據(jù)處理,RTSP_live模塊通過函數(shù)Get Complete Frame From Sink()獲取視頻流。
圖6 RTSP_live模塊消息交互時序Fig.6 Message interaction sequence of RTSP_live module
3.3.2 RTSP實(shí)時視頻流與ONVIF接口模塊封裝
為實(shí)現(xiàn)支持ONVIF協(xié)議的實(shí)時視頻功能,需要ONVIF接口模塊支持Live555服務(wù)器傳輸本地RTSP實(shí)時視頻流[14]。RTSP實(shí)時視頻流與ONVIF接口模塊封裝過程:在源碼包中查看C文件onvif.c中函數(shù)_trt_GetStreamUri()的保存地址,設(shè)置該地址與Live555服務(wù)器所在地址一致,其次填充_trt_GetStreamUri()結(jié)構(gòu)體完成soap結(jié)構(gòu)體初始化,調(diào)用soap_call_trt_GetStreamUri()函數(shù)獲取RTSP流媒體地址,配置Makefile文件并編譯,運(yùn)行二進(jìn)制可執(zhí)行文件onvif,同時打開Live555服務(wù)器,在ONVIF測試工具ODM(ONVIF Device Manager,ONVIF設(shè)備管理器)中可查到RTSP實(shí)時視頻流。
3.3.3 實(shí)時視頻流網(wǎng)絡(luò)傳輸
RTSP流媒體數(shù)據(jù)依托TCP/IP網(wǎng)絡(luò)通信協(xié)議進(jìn)行遠(yuǎn)程傳輸,因此支持ONVIF標(biāo)準(zhǔn)和RTSP協(xié)議的實(shí)時視頻流通過Socket網(wǎng)絡(luò)編程進(jìn)行傳輸。Socket網(wǎng)絡(luò)編程采用C/S模式,服務(wù)器端進(jìn)行監(jiān)聽,當(dāng)監(jiān)聽到客戶端有連接請求后,服務(wù)器端接收請求并建立連接,此時服務(wù)器端和客戶端可通過網(wǎng)絡(luò)進(jìn)行通信[15]。
客戶端首先通過socket()函數(shù)初始化Socket對象并設(shè)置參數(shù),然后以connect()函數(shù)連接指定服務(wù)器IP地址,最后將實(shí)時視頻流數(shù)據(jù)通過memset()和send()函數(shù)發(fā)送至服務(wù)器端。由于需要在PC機(jī)上接收圖像信息,所以采用.NET平臺的服務(wù)器,打開服務(wù)器后直接設(shè)置為監(jiān)聽狀態(tài),當(dāng)檢測到客戶端端口后獲取實(shí)時視頻流數(shù)據(jù),對視頻流數(shù)據(jù)進(jìn)行解碼后再通過Windows Media Player視頻軟件播放視頻,實(shí)現(xiàn)實(shí)時視頻流網(wǎng)絡(luò)傳輸。
搭建系統(tǒng)測試環(huán)境,如圖7所示。將系統(tǒng)和數(shù)字錄像機(jī)通過網(wǎng)絡(luò)交換機(jī)接入公網(wǎng),直接接入數(shù)字錄像機(jī)的顯示器用于本地顯示,在PC端和移動終端通過客戶端進(jìn)行實(shí)時遠(yuǎn)程監(jiān)控。
圖7 礦用實(shí)時視頻傳輸系統(tǒng)測試環(huán)境Fig.7 Test environment of mine-used real-time video transmission system
采集視頻數(shù)據(jù)時間設(shè)為100 s,利用抓包工具發(fā)送和接收數(shù)據(jù)包,在發(fā)送端和接收端分析抓到的RTP數(shù)據(jù)包。4組視頻數(shù)據(jù)丟包率測試結(jié)果見表1,可看出平均丟包率約為1.256%,達(dá)到技術(shù)指標(biāo)要求。
表1 視頻數(shù)據(jù)丟包率測試結(jié)果Table 1 Test results of video data packet loss rate
利用Winpcap工具獲取采集時間為3,5,8,10 min,傳輸距離為100 m時的視頻數(shù)據(jù)傳輸速率,測試結(jié)果見表2。可看出隨著采集時間和接收端數(shù)據(jù)的增加,傳輸速率基本穩(wěn)定,平均傳輸速率為2.190 Mbit/s,達(dá)到技術(shù)指標(biāo)要求。
表2 視頻數(shù)據(jù)傳輸速率測試結(jié)果Table 2 Test results of video data transmission rate
礦用實(shí)時視頻傳輸系統(tǒng)采用960 nm紅外激光作為輔助光源,利用MCCD圖像傳感器采集視頻信號,提高了低光照強(qiáng)度或黑暗環(huán)境下視頻清晰度;通過視頻解碼模塊將采集的PAL制式模擬視頻信號轉(zhuǎn)換為YUV數(shù)字信號,數(shù)字信號經(jīng)MFC進(jìn)行H.264壓縮編碼,并在此基礎(chǔ)上添加UDP報(bào)文頭進(jìn)行RTP封裝,提高了視頻數(shù)據(jù)傳輸?shù)臅r效性;通過Live555流媒體服務(wù)器進(jìn)行數(shù)據(jù)流化,使用ONVIF標(biāo)準(zhǔn)封裝RTSP視頻流,通過Socket網(wǎng)絡(luò)編程實(shí)現(xiàn)實(shí)時視頻流數(shù)據(jù)網(wǎng)絡(luò)傳輸,提高了系統(tǒng)兼容性和傳輸速率穩(wěn)定性。經(jīng)測試,該系統(tǒng)視頻傳輸速率為2.190 Mbit/s,丟包率約為1.256%,達(dá)到實(shí)時視頻傳輸要求。