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










評論