林夏 陳義華
摘要:介紹了當前視頻GIS系統(tǒng)發(fā)展的狀況,研究分析了基于GIS的視頻編解碼及傳輸、空間信息與視頻信息的結(jié)合等技術。在此基礎上設計了一個基于Android平臺的遠程移動視頻GIS系統(tǒng)。詳細論述了系統(tǒng)的總體構(gòu)架、工作原理,主要功能及系統(tǒng)實現(xiàn)的關鍵技術等,最后分析了系統(tǒng)存在的不足和今后研究的方向。
關鍵詞:Android;H264視頻流;RTP協(xié)議;移動視頻GIS;GPS
中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2012)01-0159-04
Research on the Mobile Video Technology Based on GIS and Android
LIN Xia, CHEN Yi-hua
(School of Resource and Environment Engineering, Hefei University of Technology, Hefei 230009, China)
Abstract: This paper introduces the current situation of the development of the video GIS system. Then the technology of video encod? ing, decoding and transmission and the method of combination of spatial data and video data are analyzed. On this foundation, a remote mobile video GIS system based on the Android platform is proposed. The architecture, working principle, main function and key tech? niques of system are discussed. Eventually, the defects existed in system is analyzed and the future research direction of mobile video system is summarized.
Key words:android; H264 video; RTP protocol; mobile video GIS; GPS
隨著地理信息(GIS)系統(tǒng)迅速地發(fā)展和廣泛應用,與多媒體數(shù)據(jù)尤其是視頻數(shù)據(jù)結(jié)合的GIS無論在效果還是表現(xiàn)力上都比傳統(tǒng)的GIS有著天然優(yōu)勢。國外在這方面的研究比較早,Berry(2000)提出了視頻地圖系統(tǒng),即在視頻的一個聲道中記錄精確的位置和事件數(shù)據(jù),并提出數(shù)據(jù)的外業(yè)采集、內(nèi)業(yè)處理與實際應用方案。[1]Navarrete& Blat (2002)在VideoGIS項目中通過建立視頻片段的地理索引,來將視頻影像和地理信息相結(jié)合。[2]國內(nèi)也有過相關研究:孔云峰(2007)在一個公路視頻GIS項目中,實現(xiàn)了視頻和地圖的同步播放和交互查詢。[3]豐江帆和張宏(2007)在視頻直播系統(tǒng)項目中,融合了GPS和視頻數(shù)據(jù),實現(xiàn)了基于位置的視頻直播系統(tǒng)。[4]宋宏權(quán)(2010)用Adobe Flex技術,成功設計和實現(xiàn)了基于Web的視頻GIS系統(tǒng),把視頻GIS研究又向前發(fā)展了一步。[5]
如今,隨著網(wǎng)絡通信技術的成熟和廣泛應用,尤其是3G網(wǎng)絡的普及,基于網(wǎng)絡多媒體的視頻地理信息系統(tǒng)已然蓬勃發(fā)展,并且日漸成熟。目前比較流行的一種做法,是把視頻數(shù)據(jù)傳輸?shù)椒掌鞫?,然后在服務器端通過手工處理音頻通道或建立視頻影像元數(shù)據(jù)記錄空間位置信息,來實現(xiàn)地理空間信息與視頻信息的同步。另一種做法是把GIS技術應用到視頻監(jiān)控系統(tǒng)中,實現(xiàn)位置信息與視頻信息的同步。近幾年來,隨著智能手機和云服務的普及應用,可以預見,基于手持移動端的移動視頻地理信息系統(tǒng)將會成為未來的研究熱點。
本文將從網(wǎng)絡多媒體角度,利用GIS和視頻處理技術,設計了基于Andriod平臺的遠程移動視頻地理信息系統(tǒng),對系統(tǒng)的主要內(nèi)容及關鍵技術進行了詳細的分析。
1系統(tǒng)設計與分析
1.1系統(tǒng)總體架構(gòu)設計
移動視頻地理信息系統(tǒng)由手持移動終端、無線通信、Web服務器和基于GIS的視頻接收終端幾個主要部分組成,系統(tǒng)構(gòu)架見圖1所示。
圖1系統(tǒng)架構(gòu)圖
系統(tǒng)工作原理為:手持移動終端通過Android手機內(nèi)置的GPS芯片通過定位衛(wèi)星獲取當前GPS坐標(經(jīng)度和緯度),與手機采集的視頻實時同步編碼,通過無線通信網(wǎng)絡發(fā)送給視頻接收終端。視頻接收終端接受到手持移動終端發(fā)來的數(shù)據(jù)后,經(jīng)過解碼,一邊實時顯示視頻數(shù)據(jù),一邊將GPS坐標與地圖上的坐標進行匹配,在地圖上動態(tài)顯示移動端當前位置。從而實現(xiàn)在視頻接收終端觀看移動端視頻的同時,同步地在地圖上顯示移動端的當前位置和周圍環(huán)境狀況。此外,在手持移動端和視頻接收終端,都可以地圖進行查詢和空間分析操作,方便此系統(tǒng)在各個領域中對特定應用需求的擴展應用。
1.2系統(tǒng)功能設計
移動視頻GIS系統(tǒng)設計的主要作用是為了適應當今網(wǎng)絡通訊技術特點,特別是WIFI和3G網(wǎng)絡的普及前提下,利用先進的視頻技術、網(wǎng)絡傳輸技術結(jié)合GIS技術,提供移動用戶更清晰、高質(zhì)量的實時視頻通信的同時,支持強大的空間查詢和分析能力,增強用戶體驗。
本系統(tǒng)的核心數(shù)據(jù)是視頻和空間數(shù)據(jù)。要實現(xiàn)移動端實時視頻采集和顯示,系統(tǒng)需要分模塊對視頻數(shù)據(jù)進行采集、編碼、傳輸、解碼、存儲和顯示等處理。系統(tǒng)要豐富用戶體驗和增強數(shù)據(jù)多樣性,需要將視頻和空間位置信息融合,再在基本電子地圖功能的基礎上,用GIS定制空間分析功能。由于不同移動用戶可以和不同視頻接收終端進行通信,因此系統(tǒng)需要針對不同用戶進行信息管理。系統(tǒng)功能結(jié)構(gòu)如圖2所示。
2系統(tǒng)實現(xiàn)
2.1環(huán)境平臺
本系統(tǒng)手持移動終端采用基于Android平臺的ArcGIS API for Android組件進行開發(fā)。Android是基于Linux的開源手機平臺;由操作系統(tǒng)、中間件、用戶界面和應用軟件四部分組成,是首個為移動終端打造的真正開放和完整地移動軟件平臺。ArcGIS API for Android是ESRI公司開發(fā)的在Android平臺下為GIS開發(fā)者提供的軟件開發(fā)包,通過接口可以實現(xiàn)顯示并導航地圖、查找地址點、采集GIS數(shù)據(jù)等功能,可以最大程度地滿足本系統(tǒng)的開發(fā)要求?;谝陨纤悸?,手持移動端基于Android平臺利用ArcGIS API進行開發(fā);視頻接收終端采用.net平臺利用ArcGIS Engine組件開發(fā);Web服務器端利用ArcGIS Server發(fā)布地圖和相關服務,以供手持移動端調(diào)用。
2.2視頻編碼格式與傳輸協(xié)議
從手機硬件和無線通信技術特點出發(fā),為了同時保證視頻的清晰度和流暢性,必須選擇一個先進的視頻編碼格式和合適的傳輸協(xié)議。本系統(tǒng)采用H.264標準作為視頻壓縮標準,采用RTP協(xié)議作為傳輸協(xié)議,在技術選擇上保證視頻流的容量小、高保真、快速傳輸,從而實現(xiàn)視頻的實時清晰播放。H.264是國際組織新制定的視頻編碼標準,具有高壓縮比、碼率低;圖像質(zhì)量高、容錯能力強;網(wǎng)絡適應性強;應用范圍廣等優(yōu)點,是現(xiàn)代視頻通信的首選格式。實時傳輸協(xié)議RTP是用于Internet上針對多媒體通信制定的一種傳輸協(xié)議,詳細說明了音視頻的標準數(shù)據(jù)包格式,相對于其他協(xié)議更強調(diào)實時性。經(jīng)過在WIFI網(wǎng)測試,本系統(tǒng)能理想地通過RTP協(xié)議以H.264格式傳輸視頻,到達實時觀看移動視頻的效果。
2.3視頻數(shù)據(jù)與GPS信息實時編碼
為使視頻多樣性和提高編碼速度,系統(tǒng)中采用JNI(Java native Interface)技術調(diào)用移植到Android平臺的第三方組件FFmpeg sdk來實現(xiàn)視頻流和GPS信息的同步編碼。FFmpeg是一個開源免費跨平臺的視頻和音頻流方案,屬于自由軟件,提供了錄制、轉(zhuǎn)換以及流化音視頻的完整解決方案。視頻編碼時,使用腳本命令來存儲實時GPS信息。腳本命令包括索引、腳本類型、腳本內(nèi)容。這樣當攝像頭每獲取一幀并進行編碼時,就在編碼中添加一條腳本命令,從而實現(xiàn)視頻數(shù)據(jù)和GPS信息的融合。
2.4數(shù)據(jù)傳輸
H.264視頻流要通過RTP進行傳輸,這要求H.264視頻數(shù)據(jù)需要根據(jù)RTP規(guī)范封裝成數(shù)據(jù)包。采用簡單的打包方案,把H.264的NALU放入負載中,配置RTP包頭的一系列參數(shù),從而形成一個完整地RTP數(shù)據(jù)包,通過網(wǎng)絡發(fā)送給視頻接收端。其流程分為兩部分:(1)移動端發(fā)送數(shù)據(jù)。其流程簡單歸納為:初始化RTP結(jié)構(gòu)、創(chuàng)建RTP套接字、開啟上下文會話;(2)視頻接收終端接受數(shù)據(jù)。其流程為:建立數(shù)據(jù)接收緩沖區(qū)、從socket端讀取數(shù)據(jù)到緩沖區(qū)、從緩沖區(qū)讀取RTP報文到指定位置。
2.5數(shù)據(jù)解碼
視頻接收終端接受到的數(shù)據(jù)是RTP包數(shù)據(jù),因此要經(jīng)過一些列的拆包、組包、解碼之后才能進行播放。具體流程為網(wǎng)絡接收線程從網(wǎng)絡接口讀取數(shù)據(jù)流,把其放入接受緩沖區(qū)中,有可能需要RTP包時序處理。接著經(jīng)解碼線程從“接收緩沖區(qū)”中拆包處理后,將數(shù)據(jù)讀取到“視頻幀緩沖區(qū)”中,可能需要組包處理。此時,再用GPS線程把GPS信息讀取后直接在地圖上高亮顯示出來。同時,為了消除抖動,再把數(shù)據(jù)放到環(huán)形緩沖區(qū)中處理。然后當解碼器資源充足時,解碼線程就從環(huán)形緩沖區(qū)中讀取數(shù)據(jù)進行解碼,否則進行丟包處理。經(jīng)解碼器解碼后,將得到y(tǒng)uv420格式視頻流,轉(zhuǎn)化為RGB格式后,再放入到“顯示緩沖區(qū)”中,最終播放器從“顯示緩沖區(qū)”中讀取視頻流播放。
本系統(tǒng)采用在windows下對FFmpegsdk二次開發(fā)實現(xiàn)H. 264視頻流的解碼和實時播放。系統(tǒng)數(shù)據(jù)流程圖如圖3所示。
2.6系統(tǒng)實現(xiàn)
基于以上設計思想,結(jié)合最初的功能需求,作者開發(fā)了以合肥工業(yè)大學校園為例的遠程移動視頻GIS系統(tǒng)。該系統(tǒng)不僅建立了合肥市的空間數(shù)據(jù)庫,而且實現(xiàn)了設計所需的功能要求。
系統(tǒng)開發(fā)主要分兩部分:手持移動終端和視頻接收終端。手持移動終端采用Android + ArcGIS API for Android開發(fā),在邏輯上采用三層架構(gòu):上層應用層使用Java編碼,實現(xiàn)視頻采集、視頻實時編碼等基本功能;中間層JNI層實現(xiàn)對底層的調(diào)用,用C++編寫;底層數(shù)據(jù)接收層,實現(xiàn)RTP協(xié)議的網(wǎng)絡傳輸、視頻編解碼等功能,用C語言編寫。電子地圖的基本功能通過ArcGIS API for Android接口編程來實現(xiàn),空間分析功能通過調(diào)用ArcServer發(fā)布GP服務實現(xiàn)。視頻接收終端采用在.net平臺下用ArcEngine進行二次開發(fā)。
圖4為帶GPS的手持移動終端采集視頻并實時傳輸?shù)挠脩艚缑?,當移動用戶登錄后,就可通過設置IP地址和端口與指定視頻接收終端連接,按下“錄制”按鈕,就開始發(fā)送實時采集的視頻與GPS信號,實現(xiàn)視頻通信。
圖5為視頻接收終端實時顯示視頻并定位到移動端GPS位置的用戶界面。圖中正在對合肥工業(yè)大學主教附近進行視頻采集。
3系統(tǒng)實現(xiàn)相關技術
3.1 JNI + NDK技術
Android的上層應用是用Java寫的,底層媒體庫是用C語言寫的。為了擯棄Java語言效率低的缺點,本系統(tǒng)采用JNI(Java native interface)+NDK(Native Development Kit)的技術,直接對底層庫進行操控,以提高視頻采集和編解碼的效率。NDK提供了一些列的工具集,幫助Android開發(fā)者快速開發(fā)動態(tài)庫,并能自動將動態(tài)庫和java應用一起打包成安裝包文件。JNI允許Java代碼和其他語言編寫的代碼進行交互。在Android中提供JNI的方式,讓Java程序可以調(diào)用C語言程序。本系統(tǒng)移動端,網(wǎng)絡傳輸和編碼模塊都采用了JNI + NDK技術。
3.2 RTP封包處理
為了達到實時的效果,系統(tǒng)采用了H.264視頻標準編碼和RTP協(xié)議來傳輸視頻數(shù)據(jù)。H.264編碼器支持的視頻流格式是YUV(Android視頻采集默認的生成格式),其壓縮系統(tǒng)包括視頻編碼層(VCl)和網(wǎng)絡提取層(NAL),分別負責實現(xiàn)視頻數(shù)據(jù)壓縮編碼和解碼和對視頻數(shù)據(jù)進行封裝打包后使其在網(wǎng)絡中傳送。H.264數(shù)據(jù)的RTP封包實質(zhì)就是先配好RTP數(shù)據(jù)分組頭部,再把NALU(網(wǎng)絡提取層單元)打包進RTP的負載中,從而通過RTP協(xié)議傳輸。本系統(tǒng)先定義了RTP協(xié)議的相關數(shù)據(jù)結(jié)構(gòu):數(shù)據(jù)報文結(jié)構(gòu)、頭部結(jié)構(gòu)、頭擴展結(jié)構(gòu)、同部源結(jié)構(gòu)和RTP會話上下文結(jié)構(gòu),再用打包算法把已生成的H.264視頻負載到RTP數(shù)據(jù)包中。打包的常用算法有:固定包長打包算法、面向?qū)崟r流媒體的混合模式打包算法、基于NALU大小的單個或者分割打包算法等。方法各有優(yōu)缺點,因此要根據(jù)系統(tǒng)需求,選擇合適的算法。本文鑒于Android系統(tǒng)性能的考慮,使用了較簡單的固定包長打包算法。其優(yōu)點是算法簡單,打包效率高;缺點是NAL單元有可能不放到同一個RTP包中,但這可以通過在視頻接受端進行視頻預處理解決,使視頻分幀后再播放。
3.3多線程技術
多線程技術的好處在于線程之間共用內(nèi)存,節(jié)省了內(nèi)存;相互間的切換,由于速度快,就像多個線程同時執(zhí)行一樣,提高了效率。在本系統(tǒng)中,手持移動端和視頻接收終端都用了多線程技術。在手持移動端,由于手機的CPU處理能力遠不及PC機,為了保持系統(tǒng)性能而不出現(xiàn)黑屏、死機等狀況,用分線程去處理那些CPU占用率高的任務。其中,用主線程完成UI界面刷新和即時功能操作的響應,如按鈕的即時響應、UI界面的切換;用分線程執(zhí)行CPU占用率高和耗時的工作,如視頻編碼、網(wǎng)絡通訊。在視頻接收終端,線程的引入是為了減少程序并發(fā)執(zhí)行時所付出的時間和空間開銷,使系統(tǒng)具有良好的并發(fā)性。從網(wǎng)絡接收RTP包到最終播放,用了4個線程:網(wǎng)絡接收線程、解碼線程、GPS數(shù)據(jù)讀取線程、視頻播放線程;3個緩沖區(qū):接收緩沖區(qū)、視頻數(shù)據(jù)環(huán)形緩沖區(qū)和顯示緩沖區(qū),以使視頻接收端在緩沖一段時間后流暢播放視頻。
4總結(jié)
本論文研究的創(chuàng)新之處在于根據(jù)現(xiàn)代手機系統(tǒng)和網(wǎng)絡通信特點,采用最新的技術,設計了一個基于Android的遠程移動視頻系統(tǒng),融合了視頻信息和空間位置信息,實現(xiàn)了視頻和空間信息的查詢和分析功能。實踐表明,本文提出的基本思路和設計方案具有可行性。此外,本系統(tǒng)具有良好的可擴展性,可根據(jù)不同行業(yè)、領域的需求定制和擴展相應的功能,應用到如車載視頻監(jiān)控、森林火災監(jiān)控、視頻旅游等方面。
同時,本文也只是基于一個實驗性系統(tǒng)去探究和設計,存在著一些問題。(1)經(jīng)過測試,在WIFI網(wǎng)絡下,視頻能流暢播放。但用普通網(wǎng)絡(帶寬40kb~60kb),視頻則不是很流暢;(2)視頻有時會出現(xiàn)跳躍的現(xiàn)象。這是由于有時RTP協(xié)議是不可靠傳輸協(xié)議,有時會出現(xiàn)丟包現(xiàn)象。此外,此系統(tǒng)沒有對RTP包接受部分進行很好的失序和擁塞處理,也是導致視頻不穩(wěn)定因素之一;(3)移植性不佳,未實現(xiàn)跨平臺性?;贏ndroid的遠程視頻移動GIS系統(tǒng)應具有和不同平臺環(huán)境的視頻接收終端進行通信的能力,而本系統(tǒng)并未處理這方面的問題。
隨著3G網(wǎng)絡的成熟和普及,基于手持設備系統(tǒng)的視頻地理信息系統(tǒng)將有巨大的發(fā)展空間和應用。無論是硬件設備、網(wǎng)絡傳輸速度的提高,還是軟件技術的發(fā)展更新,都意味著視頻編解碼和傳輸性能的提高,屆時將實現(xiàn)真正意義上的實時的、高保真的視頻播放。在下一階段的研究中,主要有三個研究方向:(1)完善視頻與空間信息相結(jié)合的模型,把GIS技術更廣泛地利用到移動視頻領域;(2)開發(fā)具有良好封裝性和可移植性的模塊功能。將視頻編解碼模塊、網(wǎng)絡通信模塊封裝得更好,提供不同數(shù)據(jù)格式的編解碼接口和不同協(xié)議的封包接口,供上層應用調(diào)用;(3)針對Android系統(tǒng)特點的網(wǎng)絡通信技術、編碼技術、分包算法的研究和優(yōu)化。
參考文獻:
[1] Berry J K. Capture‘Whereand‘Whenon Video-Based GIS[J].GEOWORLD,2000(9):26-27.
[2] Navarrete T, Blat J. VideoGIS:segmenting and indexing video based on geographic information[C]. 5thAGILE Conference on Geographic Information Science, Palma(Balearic Islands, Spain),April 25th-27th 2002.
[3]孔云峰.一個公路視頻GIS的設計與實現(xiàn)[J].公路,2007(1):119-121
[4]豐江帆,張宏,沙月進. GPS車載移動視頻監(jiān)控系統(tǒng)的設計[J].測繪通報,2007(2):51-53.
[5]宋宏權(quán),孔云峰.Adobe Flex框架中的視頻GIS系統(tǒng)設計與開發(fā).武漢大學學報(信息科學版),2010,35(6):743-745.
[6]魏聰穎.基于事實流媒體傳輸系統(tǒng)的H.264組包算法研究[J].計算機科學,2007,34(8):41-44.
[7]胡曉樂.基于Android平臺的MID視頻監(jiān)控系統(tǒng)的設計與實現(xiàn)[D].廣州:中山大學,2010.