引言 視頻電話終端依據(jù)其使用方式的不同,大體可分為“PC到PC”型和“電話到電話”,“PC到電話”型三大類。“電話到電話”型產(chǎn)品兩端都不需要計算機,電話終端本身包含音視頻處理器或者音視頻處理軟件完成音視頻即時通訊功能。由于此類產(chǎn)品使用簡單、安裝方便、便于控制、性價比合理等優(yōu)點..市場前景廣闊,是目前國內(nèi)外研究的熱點。 SIP(Session Initiation Protocol)協(xié)議是IETF于1999年提出的一種新的網(wǎng)絡多媒體通信的交互信令,它相對于市場主體的H.323協(xié)議具有簡單、擴展性好、便于實現(xiàn)等優(yōu)點,憑借其簡單、易于擴展、便于實現(xiàn)等諸多優(yōu)點越來越得到業(yè)界的青睞,它正逐步成為NGN和3G多媒體子系統(tǒng)域中的重要協(xié)議。市場上出現(xiàn)越來越多支持SIP的智能多媒體終端及相關軟件和軟交換設備,SIP將成為IP視頻電話業(yè)務的主流協(xié)議之一。 本文提出了一個基于SIP的嵌入式無線視頻電話終端,它除了采用數(shù)字化和網(wǎng)絡化的手段以外,還使用了嵌入式Wince設備代替原有系統(tǒng)的軟電話軟件,提高了電話設備的移動性和靈活性。更為重要的是它采用了開放的SIP同其他電話設備進行通信,從而將網(wǎng)絡中任何一臺主機變成終端,一方面擴展了通信范圍,另一方面還可以同執(zhí)行SIP的其他設備進行通信。同時,基于IP網(wǎng)絡技術的多媒體通信以其部署簡單,業(yè)務豐富,成本低廉等特點逐步得到企業(yè)的青睞。 1 總體方案設計 1.1 硬件系統(tǒng)結構 本文確定的電話終端系統(tǒng)的硬件方案為:使用三星公司的通用ARM芯片S3C2410配合嵌入式操作系統(tǒng)WINCE5.0.NET實現(xiàn)各種外圍接口,視音頻編解碼處理,和傳輸控制協(xié)議等。這樣既不存在芯片成本高的問題,又能保持很高的性能,可通過簡單的程序下載實現(xiàn)軟件下載升級或者增加新的編解碼標準。系統(tǒng)的硬件結構框圖如圖1所示。實現(xiàn)該系統(tǒng)的要點是:在WINCE下添加USB攝象頭和USB無線網(wǎng)卡驅(qū)動模塊。 ![]() 圖1 系統(tǒng)硬件結構圖 1.2應用軟件結構 在系統(tǒng)硬件完成后,剩下的需要大量的工作來定制平臺和編寫代碼實現(xiàn)各個功能模塊,最終實現(xiàn)整個系統(tǒng)。系統(tǒng)的軟件結構如圖2所示。音頻編碼采用G.711/729/723.1,是為了讓終端能適應音頻編解碼的非對稱操作。本文根據(jù)視頻電話終端的特點和當前實現(xiàn)的技術難點主要討論視頻采集傳輸和SIP協(xié)議棧2大核心技術的軟件實現(xiàn)。 ![]() 圖2 軟件系統(tǒng)結構圖 2 無線視頻電話終端的設計與實現(xiàn) 2.1 系統(tǒng)平臺的設計 在WinCE產(chǎn)品開發(fā)中,主要有內(nèi)核定制和應用程序開發(fā)兩項非常蓖要的工作。 2.2 音頻編碼模塊的實現(xiàn) 在系統(tǒng)初始化以后,音頻采集編碼模塊對應的子線程就被創(chuàng)建并掛起。當用戶需要采集音頻數(shù)據(jù)時才分別被喚醒。音頻采集編碼模塊主要完成語音的錄制和編碼處理過程。首先打開波形音頻輸入設備,準備好緩沖區(qū);然后利用聲卡把語音錄入到準備好的緩沖區(qū)里區(qū),一個緩沖區(qū)錄滿后,就可以對緩沖區(qū)里的數(shù)據(jù)進行編碼。其中音頻采集通過調(diào)用Windows低級音頻API函數(shù)族WaveIn和WaveOut來實現(xiàn).編碼通過調(diào)用G.7XX音頻接口提供的編解碼器接口實現(xiàn)。 2.3 視頻采集編碼模塊的實現(xiàn) 2.3.1 視頻采集編碼模塊 筆者采用了中星微301PLUS快速主控芯片。該芯片是一款高性能圖像壓縮芯片。輸出MJPEG視頻流數(shù)據(jù)。它的誤差穩(wěn)定性非常好,可以獲取清晰度很高的視頻圖像,而且還可以靈活設置各路視頻清晰度,壓縮幀數(shù)。本系統(tǒng)直接從攝像頭驅(qū)動中獲取MJPEG視頻流數(shù)據(jù),圖像采集流程如圖3所示。圖像采集模塊用到的主要函數(shù)有: capInitCamera() 用來初始化視頻設備,并獲取當前可用的視頻設備數(shù)目。 capSetVideoFormat() 設置視頻格式和分辨率。本系統(tǒng)使用的視頻格式為RGB24,分辨率為320x240像素。 capGrabFrame() 從驅(qū)動中抓取1幀圖像,并存儲在緩存FrameBuffer中。 capGetLastjpeg() 將抓取的MJPEG格式的圖像轉換成JPEG格式.送到無線發(fā)送模塊。 ![]() 圖3 視頻編碼模塊流程 視頻采集部分還有查詢視頻采集格式、設置叫暗度、設置對比度等相關函數(shù),不再詳述。在完成視頻采集后,再對視頻流進行H.263+的視頻JK締。視頻編碼通過調(diào)用H.263+視頻接口提供的編解碼器接口實現(xiàn)。音頻解碼回放模塊和視頻解碼回放模塊將接收到的音頻和視頻數(shù)據(jù)解碼后播放。視頻播放則將視頻數(shù)據(jù)格式轉化為RGB.再用函數(shù)DrawDibDraw函數(shù)將其顯示。 2.4 語音視頻流實時傳輸部分的實現(xiàn) 2.4.1 配置無線網(wǎng)卡 本次開發(fā)通過開發(fā)板和主機之間的無線網(wǎng)卡構建無線局域網(wǎng)絡,能夠?qū)崿F(xiàn)點對點的無縫連接,筆者通過此無線網(wǎng)絡可以實現(xiàn)文件傳輸、視頻通信等應用。開發(fā)板端的無線網(wǎng)卡也需要加載驅(qū)動才能運行。 2.4.2 音視頻數(shù)據(jù)傳輸?shù)膶崿F(xiàn) 利用RTP/RTCP實現(xiàn)語音視頻流的的實時傳輸.RTP負責數(shù)據(jù)發(fā)送和接收,RTCP負責網(wǎng)絡丟包、誤碼情況的反饋等。JRTPLIB是一個用C++語言實現(xiàn)的,面向?qū)ο蟮拈_源的RTP庫,它通過調(diào)用JRTPLIB提供的庫函數(shù)就可以開發(fā)出高質(zhì)量的音,視頻傳輸程序。 發(fā)送端調(diào)用JRTPLIB提供的庫函數(shù)實現(xiàn)語音視頻等的實時發(fā)送的過程是: 1) 通過調(diào)用RTPSession類的構造函數(shù)創(chuàng)建一個RTP會話實例.然后調(diào)用RTPSession類的方法來對其進行初始化操作,來設置負載類型、標識和時戳增量。以及指定流媒體的目標地址。 2) 設置RTP會話參數(shù),通過凋用RTPSeftsionParams類的SetOwnTimeStampUnit()方法來設置時間戳和設置RTP傳輸參數(shù)。 3) 調(diào)用SendPacket()方法用來向目標地址發(fā)送采集編碼后的音視頻數(shù)據(jù)。接收端的創(chuàng)建RTP會話實例和RTP會話參數(shù)設置和發(fā)送端的設置是一樣的。 2.5 SIP用戶代理的實現(xiàn) SIP UA模塊用于會話的建立、修改、終止,起著信令控制作用。此模塊使用的SIP協(xié)議棧是OSIP2和EXOSIP。 EXOSIP有2種工作模式:事件模式和同調(diào)模式。本軟件采用的是事件模式,使用一個定時器,定時到了后就通過函數(shù)exosip_wait_event()去獲取SIP事件,SIP事件主要有EXOSIP_CALL_NEW、EXOSIP_CALL_ANSWERED等。獲取到事件后.就調(diào)用相應的事件處理函數(shù),如SipCallNew、SipCallRinging、SipCallAnswered等等。要建立、修改、終止呼叫還需要調(diào)用EXOSIP的以下幾個函數(shù):osip_build_initial_invite、eXosip_initiate_call等。 呼叫的有關控制變量都存在CCall類中,如呼叫ID、對話ID、對端IP、對端RTP端口、語音通信的線程號、是否允許有RTP流等。SIP系統(tǒng)中的呼叫類型主要有兩個用戶代理之問的普通呼叫、重定向呼叫和通過代理服務器的呼叫。 3 結語 本文設計和實現(xiàn)了一個基于SIP的無線視頻電話終端,該終端使用嵌入式WINCE設備代替?zhèn)鹘y(tǒng)的USB電話和軟電話軟件,提高了電話系統(tǒng)的移動性和靈活性。終端之間采用開放的SIP進行通信,實現(xiàn)電話的呼叫,接聽,關閉和重定向等功能。SIP的應用避免了采用私有協(xié)議所帶來的封閉性,提高了同其他設備的互通性,擴大了通信的物理范周,也節(jié)約了通話成本。同時利用WIFI技術的加入提高了視頻電話終端的便攜性。目前SIP在視頻電話系統(tǒng)中的應用還處于試驗階段,能與之通信的SIP設備還不是很多,但隨著NGN平臺的建立和SIP設備的不段增多.它的靈活性和互通性的優(yōu)點會逐漸體現(xiàn)出來。同時,基于IP網(wǎng)絡技術的多媒體通信以其部署簡單,業(yè)務豐富,成本低廉等特點逐步得到企業(yè)的青睞。 本文作者創(chuàng)新點:1.在WINCE5.0嵌入式操作系統(tǒng)上實現(xiàn)可視電話終端,WINCE5.0相比較LINUX和過去WINCE的低版本操作系統(tǒng)來說實時性方面大大提高。目前目內(nèi)的SIP電話都是基于嵌入式LINUX或者WINCE低版本系統(tǒng)。2.在802.1la/b/g無線局域網(wǎng)(WLAN)上采用VoIP技術實現(xiàn)VoWiFi電話終端語音視頻通話功能。3.本義實現(xiàn)的SIP電話終端口可以集成多種業(yè)務,如語音信箱.通過WIFI無線上網(wǎng),重定向呼叫等業(yè)務。 項目直接經(jīng)濟效益30萬。 作者:李君懿,趙利,鄒柏程 來源:《微計算機信息》(嵌入式與SOC)2009年第2-2期 |