基于i.MX27的網(wǎng)絡(luò)音視頻通信的實(shí)現(xiàn)
MiniGUI是面向?qū)崟r(shí)嵌入式系統(tǒng)的輕量級(jí)圖形用戶界面支持系統(tǒng)。目前,MiniGUI已成為跨操作系統(tǒng)的圖形用戶界面支持系統(tǒng),可在Linux/uClinux、eCos、uC/OS-II、VxWorks等操作系統(tǒng)上運(yùn)行。
MiniGUI為實(shí)時(shí)嵌入式操作系統(tǒng)提供了完善的圖形及圖形用戶界面支持。可移植性設(shè)計(jì)使得它不論在哪個(gè)硬件平臺(tái)、哪種操作系統(tǒng)上運(yùn)行,均能為上層應(yīng)用程序提供一致的應(yīng)用程序編程接口(API)。MiniGUI的技術(shù)優(yōu)勢(shì):輕型、占用資源少,高性能、高可靠性,可配置,可伸縮性強(qiáng),跨操作系統(tǒng)支持等。
視傳機(jī)的實(shí)現(xiàn)
視傳機(jī)的最主要功能包括:通過IP或者向服務(wù)器注冊(cè)的ID號(hào)呼叫另一臺(tái)接在網(wǎng)絡(luò)上的設(shè)備,進(jìn)行視頻流實(shí)時(shí)雙向收發(fā)(1幀-25幀/s),最高分辨率可達(dá)640×480(廣播級(jí)圖像質(zhì)量/D1),可設(shè)置音頻流格式,G.711/GSM/SPEEX,此功能適用于高網(wǎng)絡(luò)帶寬的應(yīng)用環(huán)境。另外視傳機(jī)還可以實(shí)現(xiàn)電影播放,音視頻單向傳輸(遠(yuǎn)程監(jiān)控),音視頻錄制播放,圖片單雙向收發(fā),音視頻郵件收發(fā)等功能。
視傳機(jī)實(shí)現(xiàn)這些功能基本原理就是用MiniGUI制作圖形界面進(jìn)行人機(jī)交互[1],用戶通過鍵盤或者遙控器進(jìn)行指令輸入,MiniGUI接收用戶指令,并傳給操作系統(tǒng)(這里我們使用Linux 2.6.19),操作系統(tǒng)根據(jù)指令的不同進(jìn)行不同的操作,例如若用戶想進(jìn)行視頻呼叫,操作系統(tǒng)就將指令發(fā)給Linphone,Linphone就在SIP協(xié)議的基礎(chǔ)上發(fā)起視頻呼叫,根據(jù)對(duì)方不同的狀態(tài)給出不同的響應(yīng),對(duì)方不在線、對(duì)方忙、對(duì)方正常應(yīng)答等,在正常應(yīng)答的情況下雙方協(xié)商音頻視頻通信編解碼方式,建立呼叫,進(jìn)行音視頻通信[2],然后任意一方掛機(jī),退出,完成一次通信,期間還可以進(jìn)行音視頻錄制等操作。再如若用戶想進(jìn)行電影播放,則操作系統(tǒng)會(huì)調(diào)出播放程序,播放用戶指定的電影文件。
視頻流的流程如下:由攝像頭(支持自帶插針式和TV輸出兩種)采集圖像數(shù)據(jù),交給操作系統(tǒng)[3],操作系統(tǒng)根據(jù)用戶需要,將視頻數(shù)據(jù)進(jìn)行本地顯示、編碼錄制或者發(fā)送到對(duì)端,對(duì)端收到視頻數(shù)據(jù)送入VPU單元進(jìn)行解碼,然后顯示或者錄制等。通話過程中音頻流的流程為:通過mic采集音頻數(shù)據(jù),交給操作系統(tǒng),操作系統(tǒng)將數(shù)據(jù)送給Linphone,Linphone進(jìn)行一定格式的編碼[4],然后發(fā)送到對(duì)端,對(duì)端再進(jìn)行相應(yīng)的解碼,再將數(shù)據(jù)輸出到音箱或者耳機(jī)。
視傳機(jī)主要軟件Linphone的移植
Linphone有很多個(gè)版本,可以通過www.linphone.org免費(fèi)下載。我們這里使用帶視頻功能的linphone1.6.0版本,要將這個(gè)Linphone使用在開發(fā)板上,需要做3個(gè)方面的工作:添加H264硬件視頻編解碼器(使用i.MX27的VPU單元進(jìn)行視頻編解碼),修改程序使之與操作系統(tǒng)和其他應(yīng)用程序進(jìn)行通信,最后交叉編譯Linphone至開發(fā)板。
評(píng)論