陳暉 陳楊 全秋浩 趙男 許暉
摘要 目前的視頻導(dǎo)播系統(tǒng)一般由視頻處理裝置和專用硬件切換矩陣構(gòu)成,這種導(dǎo)播系統(tǒng)可靠性很差。為了解決此問題,提出了一種基于NDIS的視頻軟導(dǎo)播系統(tǒng)的設(shè)計。該軟件系統(tǒng)由內(nèi)核層網(wǎng)絡(luò)驅(qū)動、應(yīng)用層的指揮控制界面以及內(nèi)核層與應(yīng)用層之間的通信3個主要部分構(gòu)成。與硬件導(dǎo)播系統(tǒng)相比,軟導(dǎo)播系統(tǒng)實現(xiàn)了硬件通用化,布線網(wǎng)絡(luò)化,該方法已成功應(yīng)用于車載指揮控制系統(tǒng)中。
關(guān)鍵詞 NDIS;視頻導(dǎo)播;實時監(jiān)控;VLC
中圖分類號 TP317.1 文獻(xiàn)標(biāo)識碼 A 文章編號 1007-5739(2016)04-0339-03
Design of Meteorological Video TV Consultation Soft Direction System Based on NDIS
CHEN Hui CHEN Yang QUAN Qiu-hao ZHAO Nan XU Hui
(Jilin Province Meteordogical Information Network Center,Changchun Jilin 130062)
Abstract The current video director system is made up by video processing equipment and hardware switch matrix,its reliability is poor.In order to solve this problem,this paper proposed NDIS-based design of video soft direction system.The system was made of kernel network drive,command control interface in application layer and communication of kernel and application layer.Compared with hardware director system,this system had realized hardware universal,wiring network,and this method had been successfully deployed in command and control system of Vehicle.
Key words NDIS;video director;real time monitoring;VLC
在日常的氣象預(yù)報業(yè)務(wù)當(dāng)中,天氣會商是提高天氣預(yù)報業(yè)務(wù)準(zhǔn)確性的重要一環(huán),無論是省市縣的會商還是國家和各省級的會商都是氣象員做出天氣預(yù)報的重要依憑。隨著網(wǎng)絡(luò)傳輸技術(shù)的快速發(fā)展,以及硬件視頻廠商技術(shù)的巨大進(jìn)步,視頻會商系統(tǒng)在氣象業(yè)務(wù)的使用范圍越來越廣泛。視頻會商包括上行的與國家氣象局的會商系統(tǒng),下行的與地區(qū)和縣級的會商系統(tǒng)。遠(yuǎn)程可視化廣泛應(yīng)用于氣象預(yù)報的會商系統(tǒng)當(dāng)中。目前的氣象系統(tǒng)當(dāng)中主要使用華為研發(fā)的遠(yuǎn)程視頻會商系統(tǒng),視頻會商系統(tǒng)由視頻切換矩陣和視頻終端構(gòu)成[1-2]。這種基于專用硬件的導(dǎo)播系統(tǒng)存在的問題是較為復(fù)雜的模擬信號布線帶來可靠性方面的隱患,地區(qū)和縣級布線十分麻煩。最重要的是一整套會商系統(tǒng)造價昂貴,少則幾十萬,昂貴的甚至達(dá)到幾百萬,但同時這也是軟導(dǎo)播系統(tǒng)的研發(fā)動機(jī)。
相對與傳統(tǒng)的氣象視頻會商系統(tǒng)而言,軟件的導(dǎo)播系統(tǒng)是一個拋棄了負(fù)責(zé)布線和視頻切換矩陣的新型導(dǎo)播系統(tǒng)。硬件設(shè)備由音視頻編解碼器取而代之。運(yùn)行在傳統(tǒng)PC當(dāng)中,視頻流主要通過氣象內(nèi)網(wǎng)系統(tǒng)進(jìn)行傳輸,無需通過模擬視頻電纜。軟件的氣象視頻會商系統(tǒng)相比傳統(tǒng)的會商系統(tǒng)減少布線,依賴于網(wǎng)絡(luò)傳輸。并且只要有計算機(jī)的任何地點(diǎn)都可以參與到會商當(dāng)中,而不是像傳統(tǒng)會商系統(tǒng)一樣要準(zhǔn)備專門的會議室,限制了會商的靈活性。
基于NDIS的氣象視頻會商軟導(dǎo)播系統(tǒng)是運(yùn)行在windows環(huán)境的PC中和網(wǎng)絡(luò)環(huán)境中的一種氣象視頻會商軟件。以Windows平臺的內(nèi)核驅(qū)動層的NDIS框架為基礎(chǔ)。利用VS2010開發(fā)應(yīng)用層的監(jiān)控界面和導(dǎo)播窗口的系統(tǒng)軟件。通過接收來自音視頻編碼器的H.264格式的視頻流。在吉林省氣象視頻會商導(dǎo)播軟件中解碼和顯示。操作員利用該款軟件實現(xiàn)氣象會商的全程導(dǎo)播功能。接收方即可用通過通用計算機(jī)的開源軟件VLC進(jìn)行視頻接收,也可以通過視頻解碼器加上視頻顯示器實現(xiàn)人數(shù)規(guī)模較大的視頻接收,吉林省氣象視頻會商導(dǎo)播軟件它是氣象視頻會商系統(tǒng)的核心[3-4]。
1 總體設(shè)計
考慮到導(dǎo)播服務(wù)器的性能和氣象內(nèi)網(wǎng)的帶寬參數(shù),一臺導(dǎo)播服務(wù)器可以實現(xiàn)接收16路視頻流派發(fā)8路視頻流的功能。會商系統(tǒng)還支持多臺服務(wù)器的協(xié)同導(dǎo)播功能。當(dāng)幾臺導(dǎo)播服務(wù)器一起運(yùn)行會商導(dǎo)播軟件時,可以通過多機(jī)協(xié)同機(jī)制實現(xiàn)更多路的視頻會商的導(dǎo)播,可以實現(xiàn)更多路視頻的接收與派發(fā)。即接收16×N路,導(dǎo)播8×N路視頻流,其中N為導(dǎo)播服務(wù)器的個數(shù)。
在氣象視頻會商系統(tǒng)的設(shè)計當(dāng)中,它的視頻輸入端為音視頻采集設(shè)備和可以將音視頻流編碼為多播視頻流的音視頻編碼器。它的視頻輸出端由可以將音視頻流解碼的音視頻解碼器和通過RCA接口進(jìn)行播放的顯示器或者可以接收多播音視頻流的軟件組成,其整體結(jié)構(gòu)如圖1所示。
2 系統(tǒng)環(huán)境
2.1 具有組播功能的網(wǎng)絡(luò)交換機(jī)
該交換機(jī)為組播視頻流在網(wǎng)絡(luò)環(huán)境中的傳輸提供設(shè)備支持,是氣象視頻會商系統(tǒng)的網(wǎng)絡(luò)傳輸心臟。
2.2 氣象視頻會商系統(tǒng)導(dǎo)播服務(wù)器
安裝有NDIS驅(qū)動軟件的計算機(jī)服務(wù)器,當(dāng)然系統(tǒng)也必須是微軟的WINDOWS操作系統(tǒng)(可以是Windows XP或者Windows7)。該服務(wù)器是會商操作員的操作平臺。所有輸入視頻流的監(jiān)控和整個會商系統(tǒng)的導(dǎo)播在這里實現(xiàn),即運(yùn)行氣象視頻會商系統(tǒng)的導(dǎo)播主機(jī)。
2.3 視頻接收端(組播視頻客戶端)
該端是氣象視頻會商系統(tǒng)的末端。
視頻接收端有2種組成方式:一是有具有播放組播形式的H.264格式視頻流的Windows視頻播放軟件,例如開源的VLC軟件。二是由音視頻解碼器和視頻顯示器構(gòu)成。
3 導(dǎo)播軟件的系統(tǒng)結(jié)構(gòu)
前端和后端都是可以購買的硬件設(shè)備,該會商系統(tǒng)的核心是氣象視頻會商系統(tǒng)的導(dǎo)播軟件。導(dǎo)播軟件的設(shè)計基于Windows系統(tǒng)平臺的NDIS框架。整個系統(tǒng)的設(shè)計分為3個部分,第一部分是NDIS網(wǎng)絡(luò)內(nèi)核模塊的開發(fā),包括數(shù)據(jù)包的截獲,解析和封裝還有數(shù)據(jù)包報文的發(fā)送及提供給用戶層開發(fā)使用的接口。第二部分是應(yīng)用層的氣象視頻會商導(dǎo)播界面的開發(fā)設(shè)計,通過MFC對視頻會商導(dǎo)播界面進(jìn)行設(shè)計,包括視頻接收源的地址信息和視頻導(dǎo)播目的地的導(dǎo)播信息,還包括音視頻的解碼部分的開發(fā)。第三部分是內(nèi)核層與應(yīng)用層之間的通信,由于在應(yīng)用層涉及到對音視頻進(jìn)行界面操作的設(shè)計,而且應(yīng)用層不能對內(nèi)核層進(jìn)行直接操作,所以要將用戶空間的用戶口令傳達(dá)到內(nèi)核空間,因此要用到內(nèi)核層與應(yīng)用層之間的通信。況且在多機(jī)協(xié)調(diào)的過程中也涉及到內(nèi)核與用戶層之間的通信,以實現(xiàn)多臺計算機(jī)可靠并有效地進(jìn)行工作。NDIS驅(qū)動模塊在操作系統(tǒng)中的位置如圖2所示。
4 系統(tǒng)實現(xiàn)
4.1 內(nèi)核層網(wǎng)絡(luò)驅(qū)動設(shè)計
NDIS內(nèi)核數(shù)據(jù)包處理流程可以分為五部分:網(wǎng)絡(luò)數(shù)據(jù)包拆包模塊、網(wǎng)絡(luò)數(shù)據(jù)包過濾模塊、網(wǎng)絡(luò)地址轉(zhuǎn)換模塊(NAT)、NDIS模塊重新封裝數(shù)據(jù)包、其他高級功能模塊。NDIS網(wǎng)絡(luò)導(dǎo)播功能實現(xiàn)流程如圖3所示。
過濾規(guī)則是整個會商導(dǎo)播系統(tǒng)在NDIS驅(qū)動內(nèi)核層最重要的數(shù)據(jù)結(jié)構(gòu)。整個導(dǎo)播過程都在內(nèi)核層維護(hù)著一張過濾規(guī)則表。當(dāng)出現(xiàn)多個過濾規(guī)則時,通過內(nèi)核層的指針將規(guī)則表連接起來,形成過濾規(guī)則鏈。數(shù)據(jù)包在規(guī)則表中記錄下過濾規(guī)則之后,繼續(xù)在內(nèi)核中傳輸。當(dāng)數(shù)據(jù)包按規(guī)則傳輸結(jié)束后會清楚過濾規(guī)則,只需要獲得頭指針的地址就可以通過遍歷清除掉所有規(guī)則。過濾規(guī)則數(shù)據(jù)結(jié)構(gòu)如下:
過濾規(guī)則制定之后,內(nèi)核層要選擇合適的網(wǎng)卡進(jìn)行網(wǎng)絡(luò)傳輸。網(wǎng)卡的選擇要結(jié)合應(yīng)用層的程序進(jìn)行選擇。首先獲取到所有的網(wǎng)卡設(shè)備然后傳輸?shù)綉?yīng)用層的ListBox,應(yīng)用層用戶選擇合適的網(wǎng)卡,再將選用的網(wǎng)卡設(shè)備傳輸?shù)絻?nèi)核層。內(nèi)核根據(jù)應(yīng)用層傳遞的信息,選擇發(fā)送數(shù)據(jù)包所使用的網(wǎng)卡。
網(wǎng)絡(luò)設(shè)備處理流程如下:
服務(wù)器網(wǎng)絡(luò)設(shè)備描述信息的枚舉,將設(shè)備索引號于網(wǎng)卡設(shè)備名稱列于應(yīng)用層軟件。
用戶選擇合適的網(wǎng)卡設(shè)備。
網(wǎng)絡(luò)設(shè)備索引號從應(yīng)用層傳輸?shù)絻?nèi)核層,將對應(yīng)的網(wǎng)卡設(shè)備設(shè)置到相應(yīng)的狀態(tài)。
內(nèi)核層發(fā)送報文時重新封裝報文頭,將網(wǎng)絡(luò)設(shè)備索引號封裝到其中,繼續(xù)數(shù)據(jù)流程。
選擇完網(wǎng)絡(luò)設(shè)備之后,接下來是數(shù)據(jù)包的發(fā)送。
數(shù)據(jù)到達(dá)協(xié)議驅(qū)動時,調(diào)用NdisSend/NdisSendPackets請求NDIS發(fā)送數(shù)據(jù)包,緊接著NDIS會調(diào)用中間層驅(qū)動的MiniPortSend/MiniPortSendPacket,在這2個函數(shù)中可以對數(shù)據(jù)包做必要的分析處理,然后中間層驅(qū)動再次調(diào)用NdisSend/NdisSendPackets請求NDIS發(fā)送數(shù)據(jù)包。NDIS將調(diào)用下層的小端口驅(qū)動的MiniPortSend函數(shù)或者M(jìn)iniPortSendPacket函數(shù),它們通過NDIS的接口函數(shù)操作網(wǎng)絡(luò)接口卡設(shè)備將數(shù)據(jù)包傳輸出去。NdisSend函數(shù)原型如下:
4.2 多機(jī)協(xié)調(diào)機(jī)制
因為不同的時間系統(tǒng)視頻播放和導(dǎo)播方案可能會不同,對于內(nèi)核空間來說,系統(tǒng)的導(dǎo)播方案是不斷變換的。這樣勢必要將應(yīng)用層制定的導(dǎo)播方案傳遞到內(nèi)核層,因此內(nèi)核空間與用戶空間之間的通信就成為本系統(tǒng)必不可少的一個環(huán)節(jié)。
在Windows系統(tǒng)中多臺主機(jī)共同維護(hù)一張多機(jī)協(xié)調(diào)規(guī)則表,每當(dāng)增加一路視頻導(dǎo)播時就在多機(jī)協(xié)調(diào)規(guī)則表中增加一路,多機(jī)協(xié)調(diào)規(guī)則表記錄視頻源的組播IP地址和對應(yīng)的轉(zhuǎn)發(fā)的組播IP地址。這個規(guī)則可以保證多個導(dǎo)播員更好地協(xié)調(diào)工作。
4.3 系統(tǒng)程序界面設(shè)計
氣象會商導(dǎo)播系統(tǒng)的操作平臺也就是軟件的系統(tǒng)UI界面采用MFC進(jìn)行開發(fā),并且結(jié)合開源軟件VLC提供的統(tǒng)一的設(shè)備開發(fā)接口API完成了開發(fā)。開發(fā)難度主要集中在對VLC接口的使用。因為VLC接口的開發(fā)經(jīng)驗并不多,消化接口文檔在整個開發(fā)過程占據(jù)了大部分時間。VLC本身有多組播視頻流進(jìn)行解析的成熟接口也有對H.264進(jìn)行解碼的成熟接口。因為這些大大減少了導(dǎo)播軟件的界面開發(fā)難度。
VLC在開源的視頻播放器當(dāng)中是使用最廣泛的一款,以C++語言進(jìn)行的開發(fā),封裝了多種音視頻傳輸和編解碼底層視頻庫,支持多種格式的視頻編碼和組播視頻的編碼和解碼。并且支持多平臺開發(fā)。VLC的API文檔完備,接口友好,非常便于程序開發(fā)者使用。VLC的源碼使用的模塊機(jī)制,非常易于VLC的功能擴(kuò)展和程序維護(hù)。VLC的這個特點(diǎn)正適合本系統(tǒng)應(yīng)用的視頻播放接口。
5 結(jié)語
本系統(tǒng)的設(shè)計在Windows平臺下利用NDIS內(nèi)核驅(qū)動框架實現(xiàn)了氣象視頻會商系統(tǒng)的導(dǎo)播軟件的設(shè)計。目前支持H.264編碼格式的視頻流的視頻播放。應(yīng)用層采用MFC進(jìn)行導(dǎo)播界面的開發(fā),無論是對視頻的播放還是在會商過程中的音視頻導(dǎo)播都達(dá)到了很好的效果,兼顧了實時性和清晰度。
6 參考文獻(xiàn)
[1] 韓春梅.基于MAX456的視頻切換矩陣設(shè)計[J].電視技術(shù),2004(3):91-93.HAN Chun-mei .Design of a Video Switch Matrix Based on MAX456[J].TV Engineering,2004,(3):91-93.(in Chinese)
[2] 胡安磊,周大水,李大興.Linux中Netfilter / Iptables的應(yīng)用研究[J].計算機(jī)應(yīng)用與軟件,2004,21(10):56-66.HU An-lei,ZHOU Da-shui,LI Da-xing.Application Research of Netfilter/Iptables in Linux[J].Computer Applications and Software,2004,21(10):56-66.(in Chinese)
[3] 張建.服務(wù)器虛擬化在代理服務(wù)器上的應(yīng)用[J].計算機(jī)系統(tǒng)應(yīng)用,2011,20(7):146-149.ZHANG Jian.Server Virtualization Used on the Proxy Server[J].ComputerSystems&Applications,2011,20(7):146-149.
[4] 周莉,柯健,顧小晶.Netlink套接字在Linux系統(tǒng)通信中的應(yīng)用研究[J].計算機(jī)與現(xiàn)代化,2007(3):109-111.ZHOU Li,KE Jian,GU Xiao-jing.Research on Application of Netlink Socket in Linux System Communication[J].Computer and Modernization,2007(3):109-111.(in Chinese)