葛男男 孫偉 曹界宇


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