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