葛男男 孫偉 曹界宇
【摘要】? ? 隨著無(wú)人機(jī)在電力巡檢、航拍、環(huán)境監(jiān)測(cè)等方面的應(yīng)用,對(duì)無(wú)人機(jī)實(shí)時(shí)圖像傳輸系統(tǒng)提出了更高的要求,需要其能夠進(jìn)行遠(yuǎn)距離、穩(wěn)定地傳輸高清實(shí)時(shí)圖像,因此研究無(wú)人機(jī)的圖傳系統(tǒng)就顯得尤為重要。本文將研究并設(shè)計(jì)的圖傳系統(tǒng)搭載于無(wú)人機(jī),可實(shí)時(shí)采集無(wú)人機(jī)飛行過(guò)程的視頻流,然后將采集到的數(shù)據(jù)通過(guò)4G鏈路上傳至流媒體服務(wù)器,同時(shí)PC端可實(shí)時(shí)顯示無(wú)人機(jī)飛行時(shí)的視頻流信息,實(shí)現(xiàn)對(duì)無(wú)人機(jī)飛行環(huán)境的實(shí)時(shí)監(jiān)控。
【關(guān)鍵詞】? ? 無(wú)人機(jī)? ? 圖傳系統(tǒng)? ? 4G? ? 流媒體服務(wù)器
引言
隨著科技的發(fā)展,時(shí)代的進(jìn)步,無(wú)人機(jī)在軍用及民用領(lǐng)域得到廣泛應(yīng)用,例如軍事上的偵查、監(jiān)控;民用領(lǐng)域的電力巡檢、搶險(xiǎn)救災(zāi)、快遞運(yùn)輸、測(cè)繪等。而這些應(yīng)用都離不開無(wú)人機(jī)的圖傳系統(tǒng),無(wú)人機(jī)的圖像傳輸系統(tǒng)作為無(wú)人機(jī)的“眼睛”,在無(wú)人機(jī)飛離地面指揮員視線時(shí)也能將無(wú)人機(jī)在飛行過(guò)程中拍攝的畫面實(shí)時(shí)傳回地面指揮者的設(shè)備中,供指揮者來(lái)判斷無(wú)人機(jī)的狀態(tài),從而進(jìn)行決策,發(fā)出準(zhǔn)確的命令[1]。因此這就對(duì)系統(tǒng)的實(shí)時(shí)性及清晰度的要求很高。但目前無(wú)人機(jī)圖傳系統(tǒng)多采用WIFI、5.8G等模擬信號(hào)傳輸,其在復(fù)雜環(huán)境中抗干擾能力弱,傳輸距離有限,傳輸速率也較慢,難以滿足遠(yuǎn)距離高清實(shí)時(shí)圖像傳輸?shù)囊?、達(dá)不到遠(yuǎn)程監(jiān)控的效果。因此研究并設(shè)計(jì)無(wú)人機(jī)實(shí)時(shí)圖像傳輸系統(tǒng)具有重要意義。
一、系統(tǒng)總體方案設(shè)計(jì)
圖傳系統(tǒng)總體架構(gòu)圖如圖1所示,系統(tǒng)包括發(fā)送端,服務(wù)器端,PC監(jiān)控端。
1) 發(fā)送端,發(fā)送端搭載于無(wú)人機(jī),發(fā)送端包括控制器和攝像頭,控制器和攝像頭通過(guò)USB連接,控制器通過(guò)V4L2接口采集USB攝像頭視頻數(shù)據(jù),然后通過(guò)RTSP流媒體協(xié)議封裝視頻流數(shù)據(jù),并通過(guò)4G模塊推送給流媒體服務(wù)器。
2) 服務(wù)器端,通過(guò)RTSP流媒體協(xié)議接收來(lái)自發(fā)送端的數(shù)據(jù),再通過(guò)RTSP流媒體協(xié)議分發(fā)數(shù)據(jù)給PC端。
3) PC監(jiān)控端,PC監(jiān)控端通過(guò)RTSP協(xié)議從流媒體服務(wù)器拉取視頻流,再經(jīng)過(guò)視頻流解碼、格式轉(zhuǎn)換,最終將視頻流實(shí)時(shí)顯示到PC端窗口。
二、發(fā)送端設(shè)計(jì)
2.1 流媒體技術(shù)簡(jiǎn)介
由于視頻數(shù)據(jù)體積較大,在帶寬資源有限的條件下很難進(jìn)行傳輸,在這種情況下,“流媒體技術(shù)”應(yīng)運(yùn)而生。流媒體是一種通過(guò)流式傳輸方式在網(wǎng)絡(luò)上傳播的媒體格式[1],而流媒體技術(shù)就是將連續(xù)的音視頻數(shù)據(jù)壓縮處理后放在網(wǎng)站服務(wù)器上,用戶可邊下載邊觀看,而不需要等整個(gè)文件下載完才可以觀看的技術(shù)[2]。流媒體要進(jìn)行傳輸便離不開合適的傳輸協(xié)議,如RTP、RTCP、RTSP等流媒體傳輸協(xié)議,本文選用RTSP協(xié)議拉取發(fā)送端的視頻流并將采集到的視頻流推送至服務(wù)器。
RTSP(實(shí)時(shí)流傳輸協(xié)議)屬于TCP/IP協(xié)議中的應(yīng)用層協(xié)議,利用該協(xié)議可以在網(wǎng)絡(luò)上實(shí)時(shí)傳輸視頻數(shù)據(jù)[3]。RTSP優(yōu)勢(shì)包括:在傳輸視頻數(shù)據(jù)時(shí)它較能承受網(wǎng)絡(luò)延遲;易于擴(kuò)展,設(shè)計(jì)基于RTSP的音/視頻數(shù)據(jù)傳輸可通過(guò)修改參數(shù)、方法等進(jìn)行開發(fā);可降低服務(wù)器端的網(wǎng)絡(luò)用量[4]。
2.2視頻采集模塊設(shè)計(jì)
視頻采集模塊的攝像頭硬件選型上采用的是USB免驅(qū)動(dòng)的UVC攝像頭,該攝像頭支持H264、MJPEG、YUV420、YUYV422等多種格式,本系統(tǒng)采用的是H264視頻編碼格式。圖傳系統(tǒng)軟件上主要通過(guò)V4L2接口采集USB攝像頭視頻數(shù)據(jù)。V4L2是Video for linux2的簡(jiǎn)稱,是專門為linux設(shè)備設(shè)計(jì)的一套視頻框架,V4L2為linux中關(guān)于視頻設(shè)備的內(nèi)核驅(qū)動(dòng)。
在Linux系統(tǒng)中,視頻設(shè)備作為設(shè)備文件,linux應(yīng)用層可以像訪問(wèn)普通文件一樣對(duì)其進(jìn)行讀寫。圖傳系統(tǒng)通過(guò)應(yīng)用層V4L2接口調(diào)用ioctl系統(tǒng)調(diào)用,實(shí)現(xiàn)UVC攝像頭底層圖片格式查詢、圖片格式設(shè)置、視頻幀采集等功能。
該視頻采集模塊軟件實(shí)現(xiàn)流程主要包括:獲取設(shè)備性能、查詢采集設(shè)備支持的數(shù)據(jù)格式、設(shè)置視頻采集參數(shù)、向驅(qū)動(dòng)申請(qǐng)幀緩存、分配物理地址幀緩存映射、幀緩存入列、開始視頻采集、循環(huán)采集圖片幀、結(jié)束視頻采集。其中循環(huán)采集圖片流程包括:幀緩存出列、幀緩存入列、判斷圖片幀采集是否結(jié)束。
2.3視頻推送模塊設(shè)計(jì)
視頻推送模塊基于FFmpeg庫(kù)的基礎(chǔ)進(jìn)行RTSP流媒體傳輸協(xié)議的開發(fā),通過(guò)RTSP流媒體傳輸協(xié)議,圖傳系統(tǒng)將采集的相機(jī)視頻流實(shí)時(shí)上傳至流媒體服務(wù)器。其中FFmpeg是一套開源的音視頻開源庫(kù)。
該模塊軟件實(shí)現(xiàn)流程主要包括:FFmpeg初始化工作、RTSP輸出流流創(chuàng)建并填充、RTSP推流。
其中FFmpeg初始化流程包括注冊(cè)FFmpeg編解碼器、打開視頻文件、添加視頻流信息、打印輸入流視頻信息;
RTSP輸出流配置化流程包括:分配輸出上下文結(jié)構(gòu)體、申請(qǐng)視頻流AV Stream結(jié)構(gòu)體、拷貝輸入流編碼器信息至輸出流中、打印輸出流視頻信息;
RTSP推流流程包括打開輸入流URL、填充推流參數(shù)、寫入文件頭、讀取一幀數(shù)據(jù)、推送一幀數(shù)據(jù)。
三、流媒體服務(wù)器技術(shù)
3.1 流媒體服務(wù)器簡(jiǎn)介
EasyDarwin,EasyDarwin是由國(guó)內(nèi)開源流媒體團(tuán)隊(duì)開發(fā)的一款開源流媒體視頻平臺(tái)框架,EasyDarwin是在Apple開源流媒體服務(wù)器EasyDarwin Streaming Server基礎(chǔ)上開發(fā)的免費(fèi)、開源的流媒體服務(wù)器,該流媒體服務(wù)器支持RTSP、RTMP等流媒體協(xié)議[5]。經(jīng)過(guò)相關(guān)相關(guān)配置,終端采集設(shè)備通過(guò)RTSP/RTMP流媒體傳輸協(xié)議將H.264/MPEG/ACC等音視頻格式的數(shù)據(jù)上傳至EasyDarwin流媒體服務(wù)器,用戶端便可在Windows、Linux、Android、IOS 等多種平臺(tái)上實(shí)現(xiàn)流媒體數(shù)據(jù)的轉(zhuǎn)發(fā)功能、點(diǎn)播、錄像回放和流媒體直播等功能[6]。
3.2 流媒體服務(wù)器搭建
本系統(tǒng)使用的服務(wù)器部署于華為彈性云服務(wù)器。華為服務(wù)器的處理器類型為Intel Cascade Lake,c6.large.2,4vCPUs,8G內(nèi)存,處理器主頻為3GHz,外網(wǎng)帶寬10Mbps,部署在華東地區(qū)。
本系統(tǒng)使用的是Easy Darwin流媒體服務(wù)器實(shí)現(xiàn)視頻流的處理和轉(zhuǎn)發(fā)。EasyDarwin流媒體服務(wù)器搭建過(guò)程為:官網(wǎng)下載源碼、解壓縮、修改Easy_Darwin.sh啟動(dòng)腳本、sudo update-rc.d Easy_Darwin.sh defaults 90、./easydarwin啟動(dòng)EasyDarwin。
四、PC監(jiān)控端
PC監(jiān)控端基于SDL+FFmpeg開源庫(kù)的基礎(chǔ)上在Ubuntu16.04環(huán)境下進(jìn)行開發(fā)。該流程主要包括:PC監(jiān)控端通過(guò)RTSP協(xié)議向服務(wù)器端拉取視頻流,將視頻流Push到環(huán)形緩存,再經(jīng)過(guò)視頻流解碼、圖片格式轉(zhuǎn)換,最后通過(guò)SDL接口在PC窗口顯示視頻流。該P(yáng)C監(jiān)控端軟件流程圖如圖2所示。
其中視頻流解碼器基于FFmpeg的libavcodec音/視頻編解碼庫(kù)進(jìn)行開發(fā),實(shí)現(xiàn)對(duì)視頻流進(jìn)行解碼,本視頻流解碼流程為:首先初始化解碼器相關(guān)工作,包括注冊(cè)FFMPEG容器和解碼器;其次打開網(wǎng)絡(luò)流,根據(jù)打開的網(wǎng)絡(luò)流匹配對(duì)應(yīng)的解碼器;接著打開解碼器;然后進(jìn)行視頻流的拉流和推流工作,主要包括讀取一幀數(shù)據(jù),解碼一幀AVFrame直到解碼完成;最后釋放解碼器資源。
其中視頻圖片格式轉(zhuǎn)換基于FFmpeg的libswscale圖片像素格式轉(zhuǎn)換庫(kù)進(jìn)行開發(fā),實(shí)現(xiàn)對(duì)解碼后的原始幀格式轉(zhuǎn)換為SDL紋理格式。
其中SDL窗口顯示視頻流流程為:首先初始化SDL相關(guān)工作;然后創(chuàng)建PC端窗口的大小、創(chuàng)建渲染器、創(chuàng)建紋理;最后就是顯示工作,包括更新紋理、復(fù)制渲染、并將渲染呈現(xiàn)到窗口,最后清除SDL資源。
五、結(jié)束語(yǔ)
本文設(shè)計(jì)了一種無(wú)人機(jī)實(shí)時(shí)圖像傳輸系統(tǒng),該系統(tǒng)基于RTSP流媒體傳輸協(xié)議開發(fā)了一款低延時(shí)、高穩(wěn)定性的實(shí)時(shí)視頻流傳輸方案,并且PC監(jiān)控端在SDL多媒體開發(fā)庫(kù)基礎(chǔ)上進(jìn)行功能定制開發(fā),較傳統(tǒng)的VLC軟件在視頻流卡頓上有所提高。該圖傳系統(tǒng)在無(wú)人機(jī)領(lǐng)域有較大的市場(chǎng)和應(yīng)用價(jià)值。
參? 考? 文? 獻(xiàn)
[1]彭湛博. 無(wú)人機(jī)實(shí)時(shí)高清圖傳系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].西安電子科技大學(xué),2018.
[2]吳莉莉,劉益成.流媒體技術(shù)及應(yīng)用[J].信息技術(shù),2002(01):39-41.
[3]嚴(yán)羽,王永眾,楊來(lái)邦.基于無(wú)人機(jī)的實(shí)時(shí)圖傳系統(tǒng)[J].智能計(jì)算機(jī)與應(yīng)用,2019,9(04):65-70.
[4]厲鵬,李秦月.基于4G定位圖傳終端的應(yīng)用研究[J].技術(shù)與市場(chǎng),2020,27(02):26-28.
[5]游浩.基于Easydarwin平臺(tái)的視頻應(yīng)急通信軟件設(shè)計(jì)與研究[D].上海師范大學(xué),2018.
[6]韓文,張碩士.基于WebGIS的智能公交監(jiān)控調(diào)度系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].電子設(shè)計(jì)工程,2018.