

視頻會(huì)議系統(tǒng)的開(kāi)發(fā)主要涉及到協(xié)議規(guī)范、數(shù)據(jù)傳輸、音視頻編解碼、界面構(gòu)建四個(gè)主要的方面,而現(xiàn)今國(guó)外的開(kāi)源項(xiàng)目很多,其中不乏非常有參考意義的開(kāi)源源碼和參考代碼,我們應(yīng)該如何利用一些開(kāi)源的項(xiàng)目來(lái)構(gòu)建視頻會(huì)議系統(tǒng)呢?
首先我們先要了解視頻會(huì)議系統(tǒng)是一個(gè)綜合性很強(qiáng)的軟件系統(tǒng),并不是簡(jiǎn)單的一個(gè)點(diǎn)對(duì)點(diǎn)的應(yīng)用程序,如果要達(dá)到視頻會(huì)議系統(tǒng)的要求,須具備有音、視頻傳輸、電子白板、文件共享、屏幕共享等主要功能,因此我們選擇開(kāi)源項(xiàng)目的時(shí)候,不能只選擇一個(gè)開(kāi)源的項(xiàng)目作為參考,需要多個(gè)開(kāi)源的項(xiàng)目一起作為我們的參考源碼,因?yàn)橐话愕拈_(kāi)源項(xiàng)目不可能是一個(gè)完整的系統(tǒng)。
1、協(xié)議規(guī)范
視頻會(huì)議系統(tǒng)的協(xié)議是作為不同的系統(tǒng)之間數(shù)據(jù)互聯(lián)互通,如軟件視頻會(huì)議系統(tǒng)和硬件的視頻會(huì)議系統(tǒng)需要互聯(lián)互通進(jìn)行音、視頻傳輸?shù)臅r(shí)候,就必須要雙方都要遵循一個(gè)協(xié)議規(guī)范,才能相互識(shí)別相應(yīng)的數(shù)據(jù)。視頻會(huì)議的協(xié)議一般是指協(xié)議棧,主要分為H323協(xié)議、SIP協(xié)議,H323協(xié)議和SIP協(xié)議相應(yīng)都有較為完善的開(kāi)源項(xiàng)目對(duì)應(yīng),如OPAL,既兼容SIP協(xié)議又兼容H323協(xié)議,另外一個(gè)開(kāi)源的協(xié)議棧是OpenH323,該開(kāi)源項(xiàng)目是最早的H323開(kāi)源協(xié)議棧,現(xiàn)今很多視頻會(huì)議系統(tǒng)還是在OpenH323基礎(chǔ)上構(gòu)建的。最后一個(gè)值得推薦的開(kāi)源協(xié)議棧是OSIP,該協(xié)議用法簡(jiǎn)單、功能較強(qiáng),是構(gòu)建SIP協(xié)議棧的首選開(kāi)源項(xiàng)目。
2、數(shù)據(jù)傳輸
視頻會(huì)議系統(tǒng)是一個(gè)實(shí)時(shí)性非常強(qiáng)的系統(tǒng),為了適應(yīng)不同的網(wǎng)絡(luò)傳輸條件,我們傳輸?shù)臄?shù)據(jù)的時(shí)候需要建立自己的數(shù)據(jù)傳輸方式。通常數(shù)據(jù)傳輸?shù)姆绞接蠺CP傳輸和UDP傳輸,而TCP傳輸是基于有連接的傳輸方式,UDP是基于無(wú)連接的傳輸方式,TCP和UDP各有優(yōu)點(diǎn)和缺點(diǎn),TCP是可靠的傳輸方式,但在網(wǎng)絡(luò)較為擁堵的情況下,傳輸速度較慢,而UDP是不可靠的傳輸方式,傳輸速度較快,但不能保證可靠性,因此我們?cè)谶x擇數(shù)據(jù)傳輸方式上可以采用基于UDP的可靠傳輸方式,既能充分利用無(wú)連接的速度優(yōu)勢(shì),又能保證數(shù)據(jù)的可靠性。在這方面的開(kāi)源項(xiàng)目很多,我們推薦UDT開(kāi)源項(xiàng)目,其主要是通過(guò)UDP方式來(lái)實(shí)現(xiàn)可靠的傳輸,傳輸速度比TCP快幾倍,但能保證相應(yīng)的數(shù)據(jù)可靠性。數(shù)據(jù)傳輸方式的選擇可以參考“視頻會(huì)議傳輸模塊的開(kāi)發(fā)選擇”。
3、音視頻編解碼
視頻會(huì)議系統(tǒng)核心功能是音視頻對(duì)話,因此我們音視頻編解碼在視頻會(huì)議系統(tǒng)中的占有非常重要的作用。音視頻編解碼的開(kāi)源項(xiàng)目非常多,單是音頻的開(kāi)源項(xiàng)目就有幾十種,我們應(yīng)該如果選擇呢?音視頻編解碼的開(kāi)源項(xiàng)目很多,但有一個(gè)非常重要的開(kāi)源項(xiàng)目,其包含了幾乎所有的開(kāi)源編碼器項(xiàng)目,它就是ffmpeg編碼庫(kù),ffmpeg編碼庫(kù)是一個(gè)編解碼庫(kù)的集合,它加入了幾乎所有的開(kāi)源編碼器,如H264編解碼、MPEG4編解碼、AAC音頻編解碼等,而且還能自己手動(dòng)加入相應(yīng)的編碼器,因此在視頻會(huì)議軟件系統(tǒng)的開(kāi)發(fā)當(dāng)中,我們的音視頻編碼首選是ffmpeg開(kāi)源庫(kù)。
4、界面構(gòu)建
視頻會(huì)議系統(tǒng)是一個(gè)綜合性很強(qiáng)的應(yīng)用系統(tǒng),因此我們?cè)O(shè)計(jì)的界面也要符合使用者的使用習(xí)慣,因此選擇一些開(kāi)源的界面庫(kù)不僅能使我們的界面更符合使用習(xí)慣,而且能加快我們的項(xiàng)目的開(kāi)發(fā)進(jìn)度,達(dá)到事半功倍的作用。在界面庫(kù)的開(kāi)源項(xiàng)目中,我們可以有非常多的選擇,如DirectUI、GUI Libraries等,在這里我們強(qiáng)烈推薦用DirectUI,DirectUI可以界面和代碼進(jìn)行分離,而且用法較為簡(jiǎn)單,簡(jiǎn)單地的幾十行代碼就可以建立復(fù)雜的界面。
綜上所述,在我們視頻會(huì)議系統(tǒng)的開(kāi)發(fā)當(dāng)中,我們可以充分利用一些開(kāi)源的項(xiàng)目來(lái)構(gòu)建系統(tǒng)的某個(gè)模塊或者某個(gè)功能,如在協(xié)議方面,我們可以采用OPAL來(lái)構(gòu)建SIP和Openh323協(xié)議;傳輸協(xié)議我們可以采用UDT來(lái)實(shí)現(xiàn)UDP的可靠傳輸;音視頻編界面我們可以采用ffmpeg開(kāi)源項(xiàng)目來(lái)構(gòu)建;界面庫(kù)可以采用DirectUI來(lái)搭建。這些開(kāi)源項(xiàng)目都是比較著名的開(kāi)源項(xiàng)目,但在實(shí)際的項(xiàng)目開(kāi)發(fā)過(guò)程中,我們還要根據(jù)項(xiàng)目的需要來(lái)選擇。總之,利用開(kāi)源的項(xiàng)目來(lái)進(jìn)行視頻會(huì)議系統(tǒng)的開(kāi)發(fā),在很多的情況下能達(dá)到事半功倍的效果,是一個(gè)非常值得推薦的方法。
文章編輯:重慶寶利通 網(wǎng)址:http://m.newnovo.com.cn/