陳暉 陳楊 全秋浩 趙男 許暉
摘要 目前的視頻導播系統一般由視頻處理裝置和專用硬件切換矩陣構成,這種導播系統可靠性很差。為了解決此問題,提出了一種基于NDIS的視頻軟導播系統的設計。該軟件系統由內核層網絡驅動、應用層的指揮控制界面以及內核層與應用層之間的通信3個主要部分構成。與硬件導播系統相比,軟導播系統實現了硬件通用化,布線網絡化,該方法已成功應用于車載指揮控制系統中。
關鍵詞 NDIS;視頻導播;實時監控;VLC
中圖分類號 TP317.1 文獻標識碼 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
在日常的氣象預報業務當中,天氣會商是提高天氣預報業務準確性的重要一環,無論是省市縣的會商還是國家和各省級的會商都是氣象員做出天氣預報的重要依憑。隨著網絡傳輸技術的快速發展,以及硬件視頻廠商技術的巨大進步,視頻會商系統在氣象業務的使用范圍越來越廣泛。視頻會商包括上行的與國家氣象局的會商系統,下行的與地區和縣級的會商系統。遠程可視化廣泛應用于氣象預報的會商系統當中。目前的氣象系統當中主要使用華為研發的遠程視頻會商系統,視頻會商系統由視頻切換矩陣和視頻終端構成[1-2]。這種基于專用硬件的導播系統存在的問題是較為復雜的模擬信號布線帶來可靠性方面的隱患,地區和縣級布線十分麻煩。最重要的是一整套會商系統造價昂貴,少則幾十萬,昂貴的甚至達到幾百萬,但同時這也是軟導播系統的研發動機。
相對與傳統的氣象視頻會商系統而言,軟件的導播系統是一個拋棄了負責布線和視頻切換矩陣的新型導播系統。硬件設備由音視頻編解碼器取而代之。運行在傳統PC當中,視頻流主要通過氣象內網系統進行傳輸,無需通過模擬視頻電纜。軟件的氣象視頻會商系統相比傳統的會商系統減少布線,依賴于網絡傳輸。并且只要有計算機的任何地點都可以參與到會商當中,而不是像傳統會商系統一樣要準備專門的會議室,限制了會商的靈活性。
基于NDIS的氣象視頻會商軟導播系統是運行在windows環境的PC中和網絡環境中的一種氣象視頻會商軟件。以Windows平臺的內核驅動層的NDIS框架為基礎。利用VS2010開發應用層的監控界面和導播窗口的系統軟件。通過接收來自音視頻編碼器的H.264格式的視頻流。在吉林省氣象視頻會商導播軟件中解碼和顯示。操作員利用該款軟件實現氣象會商的全程導播功能。接收方即可用通過通用計算機的開源軟件VLC進行視頻接收,也可以通過視頻解碼器加上視頻顯示器實現人數規模較大的視頻接收,吉林省氣象視頻會商導播軟件它是氣象視頻會商系統的核心[3-4]。
1 總體設計
考慮到導播服務器的性能和氣象內網的帶寬參數,一臺導播服務器可以實現接收16路視頻流派發8路視頻流的功能。會商系統還支持多臺服務器的協同導播功能。當幾臺導播服務器一起運行會商導播軟件時,可以通過多機協同機制實現更多路的視頻會商的導播,可以實現更多路視頻的接收與派發。即接收16×N路,導播8×N路視頻流,其中N為導播服務器的個數。
在氣象視頻會商系統的設計當中,它的視頻輸入端為音視頻采集設備和可以將音視頻流編碼為多播視頻流的音視頻編碼器。它的視頻輸出端由可以將音視頻流解碼的音視頻解碼器和通過RCA接口進行播放的顯示器或者可以接收多播音視頻流的軟件組成,其整體結構如圖1所示。
2 系統環境
2.1 具有組播功能的網絡交換機
該交換機為組播視頻流在網絡環境中的傳輸提供設備支持,是氣象視頻會商系統的網絡傳輸心臟。
2.2 氣象視頻會商系統導播服務器
安裝有NDIS驅動軟件的計算機服務器,當然系統也必須是微軟的WINDOWS操作系統(可以是Windows XP或者Windows7)。該服務器是會商操作員的操作平臺。所有輸入視頻流的監控和整個會商系統的導播在這里實現,即運行氣象視頻會商系統的導播主機。
2.3 視頻接收端(組播視頻客戶端)
該端是氣象視頻會商系統的末端。
視頻接收端有2種組成方式:一是有具有播放組播形式的H.264格式視頻流的Windows視頻播放軟件,例如開源的VLC軟件。二是由音視頻解碼器和視頻顯示器構成。
3 導播軟件的系統結構
前端和后端都是可以購買的硬件設備,該會商系統的核心是氣象視頻會商系統的導播軟件。導播軟件的設計基于Windows系統平臺的NDIS框架。整個系統的設計分為3個部分,第一部分是NDIS網絡內核模塊的開發,包括數據包的截獲,解析和封裝還有數據包報文的發送及提供給用戶層開發使用的接口。第二部分是應用層的氣象視頻會商導播界面的開發設計,通過MFC對視頻會商導播界面進行設計,包括視頻接收源的地址信息和視頻導播目的地的導播信息,還包括音視頻的解碼部分的開發。第三部分是內核層與應用層之間的通信,由于在應用層涉及到對音視頻進行界面操作的設計,而且應用層不能對內核層進行直接操作,所以要將用戶空間的用戶口令傳達到內核空間,因此要用到內核層與應用層之間的通信。況且在多機協調的過程中也涉及到內核與用戶層之間的通信,以實現多臺計算機可靠并有效地進行工作。NDIS驅動模塊在操作系統中的位置如圖2所示。
4 系統實現
4.1 內核層網絡驅動設計
NDIS內核數據包處理流程可以分為五部分:網絡數據包拆包模塊、網絡數據包過濾模塊、網絡地址轉換模塊(NAT)、NDIS模塊重新封裝數據包、其他高級功能模塊。NDIS網絡導播功能實現流程如圖3所示。
過濾規則是整個會商導播系統在NDIS驅動內核層最重要的數據結構。整個導播過程都在內核層維護著一張過濾規則表。當出現多個過濾規則時,通過內核層的指針將規則表連接起來,形成過濾規則鏈。數據包在規則表中記錄下過濾規則之后,繼續在內核中傳輸。當數據包按規則傳輸結束后會清楚過濾規則,只需要獲得頭指針的地址就可以通過遍歷清除掉所有規則。過濾規則數據結構如下:
過濾規則制定之后,內核層要選擇合適的網卡進行網絡傳輸。網卡的選擇要結合應用層的程序進行選擇。首先獲取到所有的網卡設備然后傳輸到應用層的ListBox,應用層用戶選擇合適的網卡,再將選用的網卡設備傳輸到內核層。內核根據應用層傳遞的信息,選擇發送數據包所使用的網卡。
網絡設備處理流程如下:
服務器網絡設備描述信息的枚舉,將設備索引號于網卡設備名稱列于應用層軟件。
用戶選擇合適的網卡設備。
網絡設備索引號從應用層傳輸到內核層,將對應的網卡設備設置到相應的狀態。
內核層發送報文時重新封裝報文頭,將網絡設備索引號封裝到其中,繼續數據流程。
選擇完網絡設備之后,接下來是數據包的發送。
數據到達協議驅動時,調用NdisSend/NdisSendPackets請求NDIS發送數據包,緊接著NDIS會調用中間層驅動的MiniPortSend/MiniPortSendPacket,在這2個函數中可以對數據包做必要的分析處理,然后中間層驅動再次調用NdisSend/NdisSendPackets請求NDIS發送數據包。NDIS將調用下層的小端口驅動的MiniPortSend函數或者MiniPortSendPacket函數,它們通過NDIS的接口函數操作網絡接口卡設備將數據包傳輸出去。NdisSend函數原型如下:
4.2 多機協調機制
因為不同的時間系統視頻播放和導播方案可能會不同,對于內核空間來說,系統的導播方案是不斷變換的。這樣勢必要將應用層制定的導播方案傳遞到內核層,因此內核空間與用戶空間之間的通信就成為本系統必不可少的一個環節。
在Windows系統中多臺主機共同維護一張多機協調規則表,每當增加一路視頻導播時就在多機協調規則表中增加一路,多機協調規則表記錄視頻源的組播IP地址和對應的轉發的組播IP地址。這個規則可以保證多個導播員更好地協調工作。
4.3 系統程序界面設計
氣象會商導播系統的操作平臺也就是軟件的系統UI界面采用MFC進行開發,并且結合開源軟件VLC提供的統一的設備開發接口API完成了開發。開發難度主要集中在對VLC接口的使用。因為VLC接口的開發經驗并不多,消化接口文檔在整個開發過程占據了大部分時間。VLC本身有多組播視頻流進行解析的成熟接口也有對H.264進行解碼的成熟接口。因為這些大大減少了導播軟件的界面開發難度。
VLC在開源的視頻播放器當中是使用最廣泛的一款,以C++語言進行的開發,封裝了多種音視頻傳輸和編解碼底層視頻庫,支持多種格式的視頻編碼和組播視頻的編碼和解碼。并且支持多平臺開發。VLC的API文檔完備,接口友好,非常便于程序開發者使用。VLC的源碼使用的模塊機制,非常易于VLC的功能擴展和程序維護。VLC的這個特點正適合本系統應用的視頻播放接口。
5 結語
本系統的設計在Windows平臺下利用NDIS內核驅動框架實現了氣象視頻會商系統的導播軟件的設計。目前支持H.264編碼格式的視頻流的視頻播放。應用層采用MFC進行導播界面的開發,無論是對視頻的播放還是在會商過程中的音視頻導播都達到了很好的效果,兼顧了實時性和清晰度。
6 參考文獻
[1] 韓春梅.基于MAX456的視頻切換矩陣設計[J].電視技術,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的應用研究[J].計算機應用與軟件,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] 張建.服務器虛擬化在代理服務器上的應用[J].計算機系統應用,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系統通信中的應用研究[J].計算機與現代化,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)