摘 要: 高速作業(yè)的管理是高速管理的重要方面。首先介紹了高速公路的發(fā)展現(xiàn)狀和高速作業(yè)管理上面臨的問題和挑戰(zhàn),從遠程管理的角度出發(fā),構(gòu)建了高速作業(yè)調(diào)度系統(tǒng)。該文簡單介紹了系統(tǒng)總體設計框架并詳細闡述了客戶端上視頻模塊的設計與實現(xiàn)方法。最后對該客戶端進行測試,驗證其實際的效果,證明該設計在監(jiān)控和調(diào)度領域有良好的應用和發(fā)展前景。
關鍵詞: 高速作業(yè)管理;遠程監(jiān)控;指揮調(diào)度
0 引言
近年來,我國的高速公路建設日新月異,建成通車里程逐年上升,路網(wǎng)更加稠密[1],在經(jīng)濟社會發(fā)展總體格局中的地位越來越重要。然而,隨著路網(wǎng)密集度的提高,高速公路上出現(xiàn)事故/故障的概率也越來越大,給事故/故障的快速反應和及時處理工作提出了更高的要求。同時,隨著道路承載量的劇增,道路設施的日常維護工作也變得越來越重要。傳統(tǒng)的高速路作業(yè)模式具有反應速度慢、統(tǒng)一管理調(diào)度能力弱等缺點。隨著計算機的普及和信息技術的發(fā)展,計算機化、網(wǎng)絡化和智能化日益成為人們生產(chǎn)生活的主要方式,同時隨著多媒體計算機性能的提高和網(wǎng)絡帶寬的增大,視頻監(jiān)控也在各行各業(yè)得到了廣泛的應用。因此,為了提高高速路作業(yè)的管理調(diào)度能力,本文將視頻監(jiān)控應用于高速路作業(yè)的管理調(diào)度中,實現(xiàn)在戶內(nèi)對遠程高速路上的排障和養(yǎng)護工作的監(jiān)控、調(diào)度和管理。
1 系統(tǒng)總體架構(gòu)
高速作業(yè)調(diào)度系統(tǒng)由戶外作業(yè)設備端、服務器平臺和客戶端3部分組成。整個系統(tǒng)設計框架如圖1所示。
本系統(tǒng)設計中,服務器平臺由SIP[2]信令服務器、媒體轉(zhuǎn)發(fā)服務器和FTP服務器組成,信令服務器負責客戶端與終端、客戶端與服務器之間的信息交互,媒體轉(zhuǎn)發(fā)服務器負責H.264視頻流的轉(zhuǎn)發(fā),F(xiàn)TP服務器負責圖像資料的管理、存儲和下載工作。戶外作業(yè)設備端由手機設備組成,在手機上裝一個協(xié)助高速作業(yè)完成的APP,其主要功能是實現(xiàn)戶外作業(yè)人員的登錄管理,對調(diào)度中心派發(fā)的任務的查看和完成情況的匯報,同時在執(zhí)行任務時傳送實時視頻畫面到調(diào)度中心,讓調(diào)度中心隨時掌控戶外作業(yè)情況并做出及時的調(diào)度響應。此外還可以上傳圖像和數(shù)據(jù)資料到FTP服務器進行存檔??蛻舳司o緊圍繞高速公路排障與養(yǎng)護工作進行設計,主要實現(xiàn)對遠程高速作業(yè)的實時監(jiān)控和調(diào)度管理,以及對數(shù)據(jù)資料的統(tǒng)一管理和統(tǒng)計分析等。
2 客戶端功能模塊的設計
高速作業(yè)調(diào)度系統(tǒng)客戶端主要包括用戶管理、視頻監(jiān)控、雙向語音、任務管理、軌跡查詢、視圖管理和報表管理等幾個模塊,如圖2所示。各模塊之間相互協(xié)調(diào)工作,實現(xiàn)對高速作業(yè)的遠程監(jiān)控與調(diào)度。
用戶管理模塊由用戶登錄和密碼修改兩個子模塊組成,主要負責用戶的登錄驗證和密碼修改工作;任務管理模塊分為任務派發(fā)和任務查詢兩個子模塊,主要實現(xiàn)向遠程設備終端派發(fā)高速作業(yè)任務并對高速任務的詳細情況進行查詢顯示;視頻監(jiān)控模塊包括設備列表獲取、視頻播放、本地錄像、圖像抓取、云臺控制、參數(shù)設置等功能,主要實現(xiàn)對事故/故障現(xiàn)場的具體情況進行動態(tài)了解,從而可以做出及時調(diào)度響應;雙向語音功能利用SIP電話機實現(xiàn),客戶端可以呼叫終端設備,終端設備也可以呼叫客戶端,實現(xiàn)調(diào)度中心人員與戶外作業(yè)人員的通話,完成指揮調(diào)度;軌跡查詢模塊包括實時軌跡跟蹤和歷史軌跡查詢,主要實現(xiàn)對養(yǎng)護人員的巡邏情況進行實時跟蹤和養(yǎng)護的歷史軌跡記錄的查詢;視圖管理模塊主要實現(xiàn)對排障和養(yǎng)護作業(yè)中設備端上傳的圖像和視頻數(shù)據(jù)進行統(tǒng)一管理和保存;報表管理模塊主要實現(xiàn)對排障和養(yǎng)護的數(shù)據(jù)信息分時間段進行查詢預覽、統(tǒng)計分析和報表導出的工作。
3 視頻監(jiān)控模塊的設計與實現(xiàn)
將視頻監(jiān)控技術應用于高速作業(yè)調(diào)度管理中,可以實現(xiàn)在戶內(nèi)對遠程高速路上的排障和養(yǎng)護作業(yè)進行實時監(jiān)控管理。尤其在處理重大交通事故時,清障作業(yè)人員利用手機捕獲實時視頻畫面發(fā)送到調(diào)度中心,各級相關負責人不需親臨現(xiàn)場就可動態(tài)掌控事故現(xiàn)場的情況,做出正確的決策,完成靈活調(diào)度。
視頻監(jiān)控模塊中視頻數(shù)據(jù)采用H264格式,打包成RTP/UDP包在網(wǎng)絡中傳輸??蛻舳讼冗M行實時視頻的請求,在請求成功后,開啟線程接收流媒體服務器轉(zhuǎn)發(fā)的RTP包,并對接收到的視頻RTP包進行處理,獲取H264數(shù)據(jù),再利用DirectShow視頻處理機制[3]設計視頻播放鏈路來實現(xiàn)實時視頻數(shù)據(jù)的解碼和播放,整個流程如圖3所示。
3.1 實時視頻請求
實時視頻請求采用SIP信令完成客戶端與設備端的通信??蛻舳讼劝l(fā)送INVITE消息到SIP信令服務器,SIP信令服務器查詢被請求的設備的地址,將INVITE消息轉(zhuǎn)發(fā)給終端手機設備,手機設備接到請求后試圖開啟視頻,在完成視頻開啟后發(fā)送確認信息和媒體信息到SIP信令服務器,SIP信令服務器轉(zhuǎn)發(fā)確認信息和媒體信息給客戶端,客戶端再對信息進行確認,完成視頻請求的過程,整個流程如圖4所示。
3.2 RTP包的處理
視頻請求成功后,客戶端開啟RTP接收線程進行RTP包的接收。其中收到的RTP包的結(jié)構(gòu)如圖5所示,RTP包由RTP包頭和RTP負載組成,其中RTP負載為NALU數(shù)據(jù),而NALU數(shù)據(jù)又由一個字節(jié)的NALU數(shù)據(jù)頭和一個較長的NALU數(shù)據(jù)域組成[4]。
客戶端調(diào)用JRTPLIB庫對RTP包進行處理。首先對接收到的RTP包進行解包,取出RTP的負載數(shù)據(jù)。由于本系統(tǒng)的RTP包是基于UDP傳輸?shù)?,UDP是無連接的傳輸,客戶端上接收到的RTP包可能存在亂序等問題,故將取出的負載數(shù)據(jù)按其序列號進行重新排序存入一級緩存中。其關鍵代碼如下:
pack=GetNextPacket()//獲取RTP包
packetoder=pack->GetSequenceNumber();
//獲取接收到的RTP包的序列號
StreamBufNode*pRtpFrameNode=new StreamBufNode
((char*)pack->GetPayloadData(),
pack->GetPayloadLength(),(int)packetoder,0);
//利用獲取的RTP包信息組裝數(shù)據(jù)節(jié)點
m_pVFragmentBuffer->AddToBufBySeq(pRtpFrameNode);
//按序列號排序,暫存一級緩存中
ProcessNalu();
//對一級緩存中的數(shù)據(jù)進行重組,推送到二級緩存中
在一級緩存中將不斷對RTP數(shù)據(jù)包進行存儲和移除操作,為了提高運行效率,一級緩存采用鏈式存儲結(jié)構(gòu)。
當緩存到一定量后,將一級緩存中的數(shù)據(jù)取出進行進一步的處理。由于RTP包有一個MTU值,當NALU數(shù)據(jù)長度過大時需要對其進行分片傳輸,因此接收到的RTP包中的負載數(shù)據(jù)可能是一個NALU幀,也有可能是一個NALU分片數(shù)據(jù),利用第一個字節(jié)的TYPE值來判斷負載數(shù)據(jù)是一個完整的NALU數(shù)據(jù)幀還是一個NALU分片。若為完整的NALU數(shù)據(jù)幀,則直接將其存入二級緩存中,為后續(xù)的視頻播放提供數(shù)據(jù)源;若為NALU分片,則利用FU頭中的S、E、R值來判定NALU分片是頭分片還是尾分片還是中間分片,對NALU分片進行重組,還原為一個NALU數(shù)據(jù)幀后存入二級緩存等待后續(xù)播放。關鍵代碼如下:
pPayloadData=(unsigned char*)pStreamBufNode->GetData();//獲取一級緩存中的RTP負載
//利用分片F(xiàn)U指示字節(jié)和FU頭區(qū)分不同的NALU數(shù)據(jù)
if(m_pH264RTPReceive->ProcessHeader(pPayloadData,length,nFragment)==true){
//完整的NALU幀
if(nFragment==FRAGMENT_NO){加上00 00 00 01分隔符直接推向二級緩存;}
//NALU分片幀的頭分片
else if(nFragment==FRAGMENT_START){加上00 00 00 01分隔符;}
//NALU分片幀的中間分片
else if(nFragment==FRAGMENT_MIDDLE){將中間分片加在頭分片后面;}
//NALU分片幀的尾分片
else if(nFragment==FRAGMENT_END){加入尾分片,將重組的NALU幀推向二級緩存}
}
一級緩存和二級緩存的大小設置也很重要,若將緩存設置得過大,會造成很大的實時視頻播放時延;若將緩存設得過小,由于沒有對足夠的RTP負載數(shù)據(jù)進行排序,會造成視頻畫面回退的現(xiàn)象??紤]到網(wǎng)絡壞境和幀率等綜合因素的影響,本軟件將一級緩存大小設置為幀率的0.7倍,二級緩存的大小設置為幀率的0.8倍。
3.3 實時視頻播放鏈路的搭建
本系統(tǒng)的實時視頻播放鏈路采用DirectShow機制進行搭建,鏈路由Source Filter、Transform Filter和Render Filter組成,如圖6所示。該鏈路的Source Filter繼承自CSource類,內(nèi)部包含一個處理RTP包的類和一個PIN接口類,主要完成RTP包的處理以及將獲取的H264數(shù)據(jù)幀推送到Transform Filter中。Transform Filter調(diào)用ffdshow解碼器[5]控件,它能幫助實現(xiàn)H264視頻數(shù)據(jù)的解碼工作,并將解碼后的源數(shù)據(jù)傳遞到Render Filter。Render Filter調(diào)用系統(tǒng)默認的播放設備進行實時視頻播放。
4 客戶端測試
本文設計的高速作業(yè)調(diào)度系統(tǒng)如圖7所示。在網(wǎng)絡情況正常條件下,對系統(tǒng)進行性能測試,軟件各模塊運行正常。對視頻模塊進行測試,測試結(jié)果如表1所示。
5 結(jié)束語
綜上所述,該高速作業(yè)調(diào)度系統(tǒng)的設計可以有效提高對戶外高速作業(yè)的監(jiān)管和調(diào)度力度。此外,對該系統(tǒng)進行進一步改進,也可以將其應用到其他領域的監(jiān)控和指揮調(diào)度上,具有廣闊的市場空間和良好的發(fā)展前景。
參考文獻
[1] 李廷.基于移動網(wǎng)絡技術的高速公路智能管理系統(tǒng)[D].北京:北京郵電大學,2008.
[2] 司端鋒,韓心慧,龍勤,等.SIP標準中的核心技術與研究進展[J].北京大學軟件學報,2005,16(2):239-250.
[3] 陸其明.DirectShow開發(fā)指南[M].北京:清華大學出版社,2003.
[4] 許寧.基于RTP協(xié)議的移動視頻監(jiān)控系統(tǒng)的設計[J].通信技術,2014,47(4):455-458.
[5] 劉祎瑋.Visual C++視頻/音頻開發(fā)實用工程案例精選[M].北京:人民郵電出版社,2004.