亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Linux的視頻軟導(dǎo)播系統(tǒng)的設(shè)計(jì)

        2013-01-31 05:22:48吳天亭文成玉
        電視技術(shù) 2013年9期
        關(guān)鍵詞:多播視頻流應(yīng)用層

        吳天亭,杜 鴻,文成玉,滿 宇

        (成都信息工程學(xué)院,四川 成都610225)

        隨著視頻采集和傳輸技術(shù)的發(fā)展,遠(yuǎn)程可視化指揮手段已廣泛應(yīng)用于指揮控制系統(tǒng),視頻軟導(dǎo)播系統(tǒng)是運(yùn)行在通用計(jì)算機(jī)和網(wǎng)絡(luò)環(huán)境中的一種導(dǎo)播軟件,它接收來自監(jiān)控點(diǎn)的H.264格式的壓縮視頻流,在導(dǎo)播計(jì)算機(jī)中解碼并顯示,操作員可根據(jù)需要將其中幾路視頻流轉(zhuǎn)發(fā)給解碼顯示設(shè)備,實(shí)現(xiàn)視頻流的接收與派發(fā)的功能,它為指揮員提供熱點(diǎn)視頻導(dǎo)播和顯示的核心手段。目前的視頻導(dǎo)播系統(tǒng)一般由視頻處理裝置和轉(zhuǎn)用硬件切換矩陣構(gòu)成。視頻切換矩陣可以從多路輸入視頻信號中選擇出一路或多路送往視頻處理裝置,如視頻捕獲卡、壓縮視頻流解碼器和監(jiān)視器等[1]。這種基于專用硬件的導(dǎo)播系統(tǒng)存在的問題是,較為復(fù)雜的模擬信號布線帶來可靠性方面的隱患,從導(dǎo)播中心到顯示設(shè)備間的距離受模擬視頻信號傳輸能力的約束,模擬視頻傳輸易受環(huán)境電磁干擾而影響圖像質(zhì)量。

        在一些有設(shè)備和布線空間限制,有抗電磁干擾能力要求的指揮系統(tǒng)中,硬件導(dǎo)播系統(tǒng)存在的缺陷使得它難以勝任應(yīng)用需求。這也是軟導(dǎo)播系統(tǒng)的研發(fā)動(dòng)機(jī)。相對硬導(dǎo)播系統(tǒng)而言,軟導(dǎo)播系統(tǒng)是一個(gè)具有視頻解碼、監(jiān)控和視頻流重定向功能的軟件系統(tǒng),運(yùn)行在通用計(jì)算機(jī)中,視頻流的輸入輸出都通過網(wǎng)絡(luò)系統(tǒng)傳輸,不需通過模擬視頻電纜;導(dǎo)播輸出網(wǎng)絡(luò)壓縮視頻流由終端指揮顯示設(shè)備直接解碼并顯示。軟導(dǎo)播系統(tǒng)工作在純網(wǎng)絡(luò)環(huán)境中,布線簡單;導(dǎo)播輸出視頻流為網(wǎng)絡(luò)化壓縮視頻流,不受傳輸距離限制,抗電磁干擾能力較強(qiáng)。

        1 總體設(shè)計(jì)

        在本系統(tǒng)當(dāng)中,由于計(jì)算機(jī)性能與網(wǎng)絡(luò)帶寬等限制,在單臺計(jì)算機(jī)上本系統(tǒng)可以接收八路視頻流,并且可以轉(zhuǎn)發(fā)四路視頻流。當(dāng)多臺計(jì)算機(jī)同時(shí)使用本系統(tǒng)時(shí),通過本系統(tǒng)中的多機(jī)協(xié)調(diào)機(jī)制,可以實(shí)現(xiàn)更多路視頻的接收與派發(fā)。接收為8×N路視頻流,派發(fā)為4×N路視頻流。其中N為正在使用本系統(tǒng)的計(jì)算機(jī)的數(shù)量。

        在視頻軟導(dǎo)播系統(tǒng)的總體設(shè)計(jì)中,它的前端由具有將模擬視頻流編碼成IP組播網(wǎng)絡(luò)視頻流能力的編碼器和模擬視頻源構(gòu)成。后端由具有將IP多播網(wǎng)絡(luò)視頻流解碼為通過RCA接口進(jìn)行播放的解碼器和視頻播放器組成。整體結(jié)構(gòu)如圖1所示。

        1.1 系統(tǒng)環(huán)境

        本系統(tǒng)的使用環(huán)境如下:

        1)支持多播轉(zhuǎn)發(fā)的交換機(jī):該交換機(jī)用來連接多播視頻發(fā)生源與視頻接收客戶端與多播視頻轉(zhuǎn)發(fā)服務(wù)器。

        圖1 視頻軟導(dǎo)播系統(tǒng)結(jié)構(gòu)

        2)多播轉(zhuǎn)發(fā)服務(wù)器:安裝有Linux操作系統(tǒng)的計(jì)算機(jī)主機(jī)。該端用于視頻多播的接收和轉(zhuǎn)發(fā),該端必須具有對多播視頻的接收功能,只有接收到多播視頻才可以實(shí)現(xiàn)將接收到的視頻轉(zhuǎn)發(fā)到視頻接收端,即運(yùn)行視頻軟導(dǎo)播系統(tǒng)的主機(jī)。

        3)多播視頻發(fā)生源(多播視頻服務(wù)器):該端用于視頻多播信號的產(chǎn)生。

        4)視頻接收端(多播視頻客戶端):該端用于對多播轉(zhuǎn)發(fā)服務(wù)器轉(zhuǎn)發(fā)的多播視頻的接收。

        視頻軟導(dǎo)播系統(tǒng)是將經(jīng)過編碼的IP組播網(wǎng)絡(luò)視頻源在用戶界面上進(jìn)行實(shí)時(shí)播放,并且根據(jù)實(shí)際要求對所接收到的視頻流進(jìn)行派發(fā)。派發(fā)的目的地點(diǎn)根據(jù)用戶的選擇而進(jìn)行改變,接收到派發(fā)視頻的用戶可以實(shí)時(shí)地對視頻進(jìn)行播放。

        1.2 系統(tǒng)結(jié)構(gòu)

        本系統(tǒng)的設(shè)計(jì)基于Linux系統(tǒng)平臺中的Netfilter架構(gòu)。整個(gè)系統(tǒng)的設(shè)計(jì)分為3個(gè)部分:第一部分是內(nèi)核層網(wǎng)絡(luò)驅(qū)動(dòng)的設(shè)計(jì),主要實(shí)現(xiàn)的是對多機(jī)協(xié)調(diào)時(shí)數(shù)據(jù)包傳輸?shù)膸袷降脑O(shè)計(jì),對流經(jīng)本機(jī)的視頻流的截獲、封裝和派發(fā)規(guī)則的設(shè)定,并且編寫用戶空間使用的API;第二部分是應(yīng)用層的系統(tǒng)指揮控制界面的設(shè)計(jì),主要實(shí)現(xiàn)的是對視頻流的播放控制與派發(fā)作用,還有應(yīng)用層視頻解碼監(jiān)控及導(dǎo)播控制模塊的設(shè)計(jì);第三部分是內(nèi)核層與應(yīng)用層之間的通信,由于在應(yīng)用層涉及到對視頻進(jìn)行界面操作的設(shè)計(jì),而且應(yīng)用層不能對內(nèi)核層進(jìn)行直接操作,所以要將用戶空間的用戶口令傳達(dá)到內(nèi)核空間,因此要用到內(nèi)核層與應(yīng)用層之間的通信。況且在多機(jī)協(xié)調(diào)的過程中也涉及到內(nèi)核與用戶層之間的通信,以實(shí)現(xiàn)多臺計(jì)算機(jī)可靠并有效地進(jìn)行工作。

        軟件的系統(tǒng)結(jié)構(gòu)圖如圖2所示,IPSWITCH.KO為自行開發(fā)的內(nèi)核驅(qū)動(dòng)程序的模塊名稱。

        1.3 設(shè)計(jì)思想

        圖2 軟件系統(tǒng)結(jié)構(gòu)

        視頻軟導(dǎo)播的設(shè)計(jì)思想的核心是在內(nèi)核層對截獲的數(shù)據(jù)包就行修改,封裝達(dá)到對數(shù)據(jù)包進(jìn)行自由派發(fā)的目的。與此同時(shí),對數(shù)據(jù)流量與實(shí)時(shí)性又有很高要求。所以Linux系統(tǒng)中的Netfilter架構(gòu)成為了本系統(tǒng)首選的切入點(diǎn)。Netfilter的設(shè)計(jì)并不相關(guān)于某個(gè)確定的協(xié)議,而是在協(xié)議棧中為每個(gè)網(wǎng)絡(luò)協(xié)議定義一套唯一的鉤子函數(shù),也就是HOOK函數(shù)。在數(shù)據(jù)包經(jīng)過協(xié)議棧的這些掛接點(diǎn)時(shí),鉤子函數(shù)被系統(tǒng)調(diào)用,在這些鉤子函數(shù)的掛接點(diǎn)中,數(shù)據(jù)報(bào)被協(xié)議棧及鉤子函數(shù)標(biāo)號作為參數(shù),傳遞給Netfilter框架。對于它在網(wǎng)絡(luò)堆棧中增加的這些HOOK。內(nèi)核的任何模塊可以對每種協(xié)議的一個(gè)或多個(gè)HOOK進(jìn)行注冊,實(shí)現(xiàn)掛接。這樣當(dāng)某個(gè)數(shù)據(jù)報(bào)被傳遞給Netfilter框架時(shí),內(nèi)核能檢測到是否有任何模塊對該協(xié)議和HOOK函數(shù)進(jìn)行了注冊,若注冊了,則調(diào)用該模塊的注冊時(shí)使用的回調(diào)函數(shù),這樣這些模塊就有機(jī)會(huì)檢查、修改、丟棄該數(shù)據(jù)報(bào)及指示Netfilter將該數(shù)據(jù)報(bào)傳入用戶空間的隊(duì)列[2]。這一設(shè)計(jì)思想符合本系統(tǒng)的設(shè)計(jì)理念。

        2 系統(tǒng)實(shí)現(xiàn)

        2.1 內(nèi)核層網(wǎng)絡(luò)驅(qū)動(dòng)設(shè)計(jì)

        Netfilter架構(gòu)一般可以分為5個(gè)部分:數(shù)據(jù)報(bào)過濾模塊、連接跟蹤模塊(Conntrack)、網(wǎng)絡(luò)地址轉(zhuǎn)換模塊(NAT)、數(shù)據(jù)報(bào)修改模塊(mangle)、其他高級功能模塊。Netfilte的節(jié)點(diǎn)關(guān)系則如圖3所示,其中IPSWITCH.KO為本系統(tǒng)的網(wǎng)絡(luò)驅(qū)動(dòng)模塊。

        圖3 Netfilter結(jié)構(gòu)圖

        由本系統(tǒng)前端輸入的IP組播視頻流數(shù)據(jù)包流經(jīng)IP_PRE_ROUTING點(diǎn)后,接下來的流經(jīng)路徑有3種選擇:第一種是對數(shù)據(jù)包不做任何處理,那么該IP視頻流會(huì)經(jīng)過IP_LOCAL_IN節(jié)點(diǎn),然后傳送到系統(tǒng)主機(jī);第二種是對數(shù)據(jù)包就行修改,使其符合從IP_FORWARD流經(jīng)的條件;第三種是將數(shù)據(jù)包直接由POST_ROUTING節(jié)點(diǎn)發(fā)送出去。

        顯然要達(dá)到本系統(tǒng)所要求的目的,也就是對視頻流在用戶空間進(jìn)行播放并且具有派發(fā)功能。那么要用到第一種以及第三種數(shù)據(jù)包的處理方式。因?yàn)樵摂?shù)據(jù)包是組播包,在Linux內(nèi)核的結(jié)構(gòu)中對組播數(shù)據(jù)包進(jìn)行修改,并且符合第二種條件的要求勢必要做出大量的編碼工作,而第三種數(shù)據(jù)包處理方式的選擇相對要簡單高效。

        所以本系統(tǒng)對數(shù)據(jù)包的處理過程是:在IP_LOCAL_IN之前對數(shù)據(jù)包進(jìn)行截獲,然后復(fù)制數(shù)據(jù)包,一份數(shù)據(jù)包直接由IP_LOCAL_IN點(diǎn)進(jìn)入本地主機(jī),另一份則根據(jù)應(yīng)用層傳遞的命令由POST_ROUTING點(diǎn)直接發(fā)送出去。截獲過程HOOK函數(shù)的實(shí)現(xiàn)代碼如下:

        modify_ops.hook=modify;

        modify_ops.hooknum=NF_IP_LOCAL_IN;

        modify_ops.pf=PF_INET;

        modify_ops.priority=NF_IP_PRI_FIRST;

        ret=nf_register_hook(&modify_ops);

        if(ret<0)

        {

        printk("%s ","can't modify skb hook!");

        return ret;

        }

        案例3:在“均值不等式的定理”一節(jié)中,可用“某商店在節(jié)前進(jìn)行商品降價(jià)酬賓銷售活動(dòng),擬分兩次降價(jià),有三種降價(jià)方案:甲方案是第一次打A折銷售,第二次打B折銷售;乙方案是第一次打B折銷售,第二次打A折銷售;丙方案是兩次都打—樣折銷售,問哪一種方案降價(jià)較多?”

        printk("%s ","insmod modify skb module");return 0;

        由加載鉤子函數(shù)的代碼可以看出,該截獲數(shù)據(jù)包的函數(shù)是掛接在IP_LOCAL_IN這個(gè)節(jié)點(diǎn)之前的。這樣就可以讓數(shù)據(jù)包既流經(jīng)本機(jī)又可以對數(shù)據(jù)包直接進(jìn)行修改,然后發(fā)送出去。其中,對數(shù)據(jù)包的截獲和發(fā)送時(shí)修改的參數(shù)都是由用戶空間傳遞給內(nèi)核層的。

        2.2 多機(jī)協(xié)調(diào)機(jī)制

        多機(jī)協(xié)調(diào)機(jī)制借鑒于Netfilter框架的連接跟蹤機(jī)制。所謂連接跟蹤機(jī)制就是跟蹤并且記錄連接狀態(tài)。Linux為每一個(gè)經(jīng)過網(wǎng)絡(luò)堆棧的數(shù)據(jù)包,生成一個(gè)新的連接記錄項(xiàng)[3]。此后,所有屬于此連接的數(shù)據(jù)包都被唯一地分配給這個(gè)連接,并標(biāo)識連接的狀態(tài)。連接跟蹤是防火墻模塊的狀態(tài)檢測的基礎(chǔ)。

        本系統(tǒng)的多機(jī)協(xié)調(diào)機(jī)制即利用Netfilter固有的連接跟蹤機(jī)制,然后多臺主機(jī)的視頻軟系統(tǒng)共同維護(hù)一張視頻軟導(dǎo)播派發(fā)表。在這張表格上記錄接收的視頻源的地址與轉(zhuǎn)發(fā)的視頻流的目的地址,并且對應(yīng)視頻源地址與轉(zhuǎn)發(fā)目的地址。這樣在視頻進(jìn)行轉(zhuǎn)發(fā)時(shí),系統(tǒng)首先查詢該表,針對該表中的已有記錄項(xiàng)確定是否進(jìn)行接收與派發(fā)。當(dāng)該主機(jī)確定進(jìn)行接收或者派發(fā)的步驟后,那么該系統(tǒng)將會(huì)把新的接收與派發(fā)規(guī)則更新入該表格。這樣就可以很好地實(shí)現(xiàn)多機(jī)互動(dòng),有效地進(jìn)行更多路視頻的導(dǎo)播功能。

        2.3 內(nèi)核空間與用戶空間之間的通信

        因?yàn)椴煌臅r(shí)間系統(tǒng)的視頻播放和導(dǎo)播方案可能會(huì)不同,對于內(nèi)核空間來說系統(tǒng)的導(dǎo)播方案是變換的。這樣勢必要將應(yīng)用層制定的導(dǎo)播方案傳遞到內(nèi)核層,所以內(nèi)核空間與用戶空間之間的通信就成為本系統(tǒng)必不可少的一個(gè)環(huán)節(jié)。

        在內(nèi)核空間與用戶空間通信的方法中,本系統(tǒng)選擇了使用Netlink的通信方式來進(jìn)行。Netlink套接字是用以實(shí)現(xiàn)用戶進(jìn)程與內(nèi)核進(jìn)程通信的一種特殊的進(jìn)程間通信(IPC),也是Linux系統(tǒng)中網(wǎng)絡(luò)應(yīng)用程序與內(nèi)核模塊進(jìn)行通信的常用的接口[4]。簡單易用的套接字應(yīng)用編程接口(API)是Netlink套接字的特點(diǎn)之一,并具有其他用戶與內(nèi)核進(jìn)程間通信所缺少的很多特性,例如多播、I/O緩沖、全雙工通信、異步通信等。和其他的進(jìn)程間通信比較而言,這種在內(nèi)核中增加新的特性的系統(tǒng),Netlink套接字更加適合作為系統(tǒng)中用戶空間與內(nèi)核空間通信的方式。而且它還支持多點(diǎn)傳送消息,既可以實(shí)現(xiàn)內(nèi)核模塊一點(diǎn)對一點(diǎn)的通信,也可以實(shí)現(xiàn)單一內(nèi)核模塊與多個(gè)用戶空間進(jìn)程的多點(diǎn)通信。這為內(nèi)核向用戶空間發(fā)布事件提供了一個(gè)非常有效的機(jī)制。

        本系統(tǒng)在Netlink通信機(jī)制的設(shè)計(jì)中制定了內(nèi)核層與用戶層的數(shù)據(jù)交換規(guī)則和數(shù)據(jù)包派發(fā)規(guī)則等一系列操作,在這些操作中系統(tǒng)都設(shè)定為類似于Iptables式的命令行參數(shù)的方式來對規(guī)則進(jìn)行添加、修改、刪除等操作。這樣本系統(tǒng)不僅可以通過用戶空間的程序的界面對內(nèi)核規(guī)則進(jìn)行操作,也可以通過Linux的系統(tǒng)終端向內(nèi)核層傳遞命令。

        2.4 系統(tǒng)程序界面設(shè)計(jì)

        系統(tǒng)程序界面采用QT軟件進(jìn)行設(shè)計(jì),而視頻播放插件則選用開源軟件VLC(Video Lan Client)提供的視頻播放接口。在用QT對系統(tǒng)界面進(jìn)行設(shè)計(jì)時(shí),主要是設(shè)計(jì)Netlink命令行參數(shù)與QT界面控件的接口,而VLC的接口函數(shù)則對系統(tǒng)播放的多播IP地址進(jìn)行解析。

        VLC是一個(gè)向用戶公開代碼的、多個(gè)平臺都可以進(jìn)行使用的視頻播放器。在VLC中支持大量的音視頻傳輸、封裝和編碼解碼格式。從程序結(jié)構(gòu)來看,VLC的可擴(kuò)展性是相當(dāng)優(yōu)秀的。因?yàn)閂LC的多平臺的性質(zhì)。它的絕大多數(shù)代碼都是用高效的C語言來編寫(少量的C++和匯編)的,但是仿照與Linux內(nèi)核的模塊機(jī)制,實(shí)現(xiàn)了完全動(dòng)態(tài)的模塊化功能,VLC的全部功能就連程序框架本身都是VLC中的模塊,這樣可以在VLC運(yùn)行的時(shí)候進(jìn)行載入。這些特性使得VLC在功能的擴(kuò)展上具有更大優(yōu)勢并且易于維護(hù)。VLC的這個(gè)特點(diǎn)正適合本系統(tǒng)應(yīng)用的視頻播放接口。

        3 小結(jié)

        本系統(tǒng)的設(shè)計(jì)在Netfilter的框架下實(shí)現(xiàn)了視頻軟導(dǎo)播的功能。目前支持的視頻編碼只限于H.264的視頻格式,系統(tǒng)可以根據(jù)不同的派發(fā)規(guī)則,實(shí)現(xiàn)視頻導(dǎo)播的功能,在視頻的流暢性與實(shí)時(shí)性都達(dá)到了很好的效果。

        [1]韓春梅.基于MAX456的視頻切換矩陣設(shè)計(jì)[J].電視技術(shù),2004,28(3):91-93.

        [2]胡安磊,周大水,李大興.Linux中Netfilter/Iptables的應(yīng)用研究[J].計(jì)算機(jī)應(yīng)用與軟件,2004,21(10):56-66.

        [3]張建.服務(wù)器虛擬化在代理服務(wù)器上的應(yīng)用[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2011,20(7):146-149.

        [4]周莉,柯健,顧小晶.Netlink套接字在Linux系統(tǒng)通信中的應(yīng)用研究[J].計(jì)算機(jī)與現(xiàn)代化,2007(3):109-111.

        猜你喜歡
        多播視頻流應(yīng)用層
        胖樹拓?fù)渲懈咝?shí)用的定制多播路由算法
        邊緣實(shí)時(shí)視頻流分析系統(tǒng)配置動(dòng)態(tài)調(diào)整算法研究
        用于超大Infiniband網(wǎng)絡(luò)的負(fù)載均衡多播路由
        InfiniBand中面向有限多播表?xiàng)l目數(shù)的多播路由算法
        基于視頻流傳輸中的擁塞控制研究
        基于分級保護(hù)的OA系統(tǒng)應(yīng)用層訪問控制研究
        美國視頻流市場首現(xiàn)飽和征兆
        新一代雙向互動(dòng)電力線通信技術(shù)的應(yīng)用層協(xié)議研究
        物聯(lián)網(wǎng)技術(shù)在信息機(jī)房制冷系統(tǒng)中的應(yīng)用
        Current advances in neurotrauma research: diagnosis, neuroprotection, and neurorepair
        国产精品高清视亚洲乱码有限公司 | 国内自拍速发福利免费在线观看| www.尤物视频.com| 在线成人tv天堂中文字幕| 亚洲精品国产老熟女久久| 亚洲另在线日韩综合色| 精品福利一区| 九九久久精品大片| 经典女同一区二区三区| 亚洲av五月天天堂网| 国产成人精品中文字幕| 亚洲av乱码国产精品观看麻豆| 亚洲一区二区av免费观看| 亚洲中文乱码在线观看| 国产毛片视频一区二区三区在线 | 丰满人妻av无码一区二区三区| 国产av无码专区亚洲av琪琪| 野外性史欧美k8播放| 韩国19禁主播深夜福利视频| 美国黄色片一区二区三区| 在线不卡中文字幕福利| 午夜亚洲精品视频在线| av手机在线观看不卡| 国产精品女老熟女一区二区久久夜 | 中文字幕丰满乱子无码视频| 初女破初的视频| 无码中文字幕日韩专区视频| 国产午夜亚洲精品午夜鲁丝片| 美女扒开内裤让男生桶| 亚洲国产成人手机在线电影| 国产女人高潮的av毛片| 91羞射短视频在线观看| 一本色道久久亚洲av红楼| 国产私人尤物无码不卡| 国产成人亚洲综合无码品善网 | 久久久噜噜噜www成人网| 99久久综合狠狠综合久久一区| 加勒比东京热久久综合| 国产av三级精品车模| 青青草原综合久久大伊人精品| 男人天堂这里只有精品|