基于STB 和SIP 視頻通信軟件設(shè)計及測試
在視頻通信信令協(xié)議中,SIP 協(xié)議憑借自身特有的優(yōu)點(diǎn)成為研究與應(yīng)用的熱點(diǎn).有線電視信號已從模擬轉(zhuǎn)向數(shù)字,數(shù)字機(jī)頂盒是其過度的橋梁,能夠使模擬電視用戶同樣觀看到數(shù)字信號頻道的節(jié)目.但是目前的數(shù)字機(jī)頂盒尚沒有提供適合于散戶安裝的簡易視頻交互通信功能,具備這種功能的數(shù)字機(jī)頂盒具有極大的市場與應(yīng)用價值.在此背景下,本文嘗試實(shí)現(xiàn)數(shù)字機(jī)頂盒間的簡易視頻交互,以便在一般機(jī)頂盒技術(shù)上附加視頻電話功能等.
1 總體軟件結(jié)構(gòu)
本文使用C 語言編程完成相關(guān)軟件功能,總體軟件結(jié)構(gòu)流程圖如圖1 所示.前半部分主要是實(shí)現(xiàn)STB 與SIP 終端之間的通信連接,后半部分主要是實(shí)現(xiàn)瀏覽器與視頻通信模塊之間的連接.
視頻通信的具體流程如下:
1. 將攝像頭連接到SIP 終端上,然后將SIP 終端連接到STB上.
2. 將STB 鏈接到有線電視網(wǎng)絡(luò)上,同時將STB 連接到電視機(jī)上.
3. 登錄STB 的WEB 頁面,通過好友界面,選擇好友,并發(fā)起呼叫.
4. 呼叫接通后,通過電視,開始進(jìn)行視頻通話.
1.1 STB 與SIP 終端之間的通信流程設(shè)計
一.STB 與門戶之間的通信流程
STB 與門戶之間總共有2 個接口:心跳接口和呼叫接口.
(1)心跳接口
接口功能:提供給機(jī)頂盒開機(jī)時發(fā)送信息,給門戶,以便門戶好管理用戶狀態(tài).
接口走向:機(jī)頂盒→門戶Portal.
(2)呼叫接口
接口功能:在門戶上呼叫好友之后,門戶會返回好友的呼叫信息,而通過這些信息,機(jī)頂盒可以呼叫對方的SIP 終端.
接口走向:門戶Portal→機(jī)頂盒
二.STB 與SIP 之間的流程
STB 通過門戶拿到好友的DN 以及好友的SIP 終端的IP 和端口之后,開始與好友的SIP 終端建立連接,當(dāng)這個連接建立成功之后,就可以通過STB 和sip 終端,進(jìn)行視頻通訊.好友的音視頻信息可以通過電視播放出來.
這個流程總共包含2 個接口:心跳接口和呼叫接口.
(1)心跳接口:STB 與自己的SIP 終端之間保持心跳.
接口走向:自己的SIP 終端→ STB
Server 端:STB.
(2)呼叫接口:STB 呼叫好友的SIP 終端.
接口走向:好友的SIP 終端→自己的STB
Server 端:STB
1.2 瀏覽器與視頻通信模塊之間的接口函數(shù)設(shè)計
用戶發(fā)起呼叫時,呼叫窗口通過瀏覽器顯示來,因此需要設(shè)計瀏覽器與視頻通信模塊之間的接口函數(shù).需要的函數(shù)為庫函數(shù)和接口函數(shù).庫函數(shù)為瀏覽器庫函數(shù):D_Browser_AppNotify,從視頻通信模塊傳遞狀態(tài),觸發(fā)瀏覽器工作.接口函數(shù)包括:
D_SIP_Play :傳遞視頻通訊參數(shù).
D_SIP_Stop :關(guān)閉視頻通訊.
D_SIP_SetWindow :設(shè)置視頻窗口位置.
D_SIP_GetWindow :獲得視頻窗口顯示位置.
D_SIP_AV_Start :開啟視頻通訊視音頻.
D_SIP_AV_Stop :關(guān)閉視頻通訊的視音頻.
2 視頻通信軟件系統(tǒng)測試
2.1 視頻通信功能測試
為了驗證軟件設(shè)計的可行性,本文進(jìn)行了模擬測試,設(shè)備連接如圖2 所示.
測試步驟如下:
2.1.1 進(jìn)入系統(tǒng)
a) 通過導(dǎo)視菜單進(jìn)入到視頻通信的頁面,具體步驟是【導(dǎo)視】→【通訊】→【視頻通話】;
b) 在該頁面選擇【視頻通訊】選項,進(jìn)入到視頻通信的首頁.
c) 頁面從左至右分為三個區(qū)域:好友列表區(qū).呼叫和刪除區(qū)以及添加好友區(qū).
2.1.2 添加好友
a) 進(jìn)入到視頻通訊首頁,然后點(diǎn)擊“添加好友”,進(jìn)入到好友添加列表.
b) 通過遙控器選中選中輸入框“請輸入好友的聯(lián)系方式”,然后通過遙控器上的數(shù)字鍵輸入好友的號碼.
c) 輸入號碼后,按遙控器確定鍵,會提示添加成功.
d) 之后選中頁面上的“返回”將返回到好友列表.
2.1.3 視頻呼叫
a) 主叫:主叫模式是指通過導(dǎo)視菜單進(jìn)入到視頻通訊首頁,并發(fā)起對好友的呼叫.進(jìn)入到視頻通訊首頁,選擇某個好友,點(diǎn)擊呼叫按鈕,進(jìn)入到呼叫等待頁面.若呼叫失敗,將進(jìn)入到呼叫失敗頁面;若呼叫成功,則將進(jìn)入到視頻通話的頁面.按掛斷按鈕,將返回到好友列表頁面,即視頻通訊首頁.
b) 被叫是指沒有進(jìn)入到視頻通訊模塊,這時收到好友的來電請求,彈出來電提示框.接收來顯請求,選擇全屏模式,則會全屏顯示好友的視頻.
2.1.4 終止視頻通話
a)在瀏覽器模式下終止視頻通話.則可以直接在通話的頁面上,選擇 “終止視頻通話”,則返回視頻通話首頁.在視頻通訊首頁,若按遙控器的“退出”鍵,將退出首頁面,返回電視觀看狀態(tài).
2.2 視頻通信SIP 協(xié)議測試
在視頻通信呼叫過程中,利用Wireshark 抓包軟件,即可獲得呼叫過程的SIP 信令協(xié)議數(shù)據(jù).Wireshark 是一個網(wǎng)絡(luò)封包分析軟件,安裝使用方便,其功能是擷取網(wǎng)絡(luò)封包,并盡可能顯示出最為詳細(xì)的網(wǎng)絡(luò)封包資料,從而可以分析協(xié)議.
本文主要測試SIP 信令協(xié)議中的會話邀請.應(yīng)答與終止信令即一個完整的會話建立與終止過程.STB_A 分配一個用于測試的fSipDn = 8012.fSipIp = 10.171.0.2,STB_B 分配的用于測試的fSipDn = 8013.fSipIp = 10.171.0.3.當(dāng)STB_A 向STB_B 發(fā)起呼叫建立會話時,使用wireshark 抓包工抓取數(shù)據(jù)包.
從實(shí)驗數(shù)據(jù)可知STB_A 為主叫方,STB_B 為被叫方,呼叫建立過程為:
1.STB_A 向STB_B 發(fā)出INVITE 類的SIP 請求消息,STB_B 注冊的域中有一個代理服務(wù)器,請求消息被10.27.81.31(代理服務(wù)器)接收.
2.10.27.81.31 收到INVITE 類請求消息后,向STB_A 發(fā)回狀態(tài)碼為100 的響應(yīng)消息,說明請求已經(jīng)收到.
3.10.27.81.31 依據(jù)收到的INVITE 類請求消息產(chǎn)生新的INVITE 類請求消息“代理”STB_A 向STB_B 發(fā)出INVITE 類請求消息.
4.STB_A 向10.27.81.31 發(fā)送ACK 類請求消息,說明已經(jīng)收到了INVITE 請求消息的最終響應(yīng).
5.10.27.81.31 將ACK 消息轉(zhuǎn)發(fā)給STB_B,到此為止表明呼叫建立成功.
6.通信結(jié)束,STB_A 首先掛機(jī),向代理服務(wù)器發(fā)出BYE 類請求消息.
7.10.27.81.31 向STB_A 發(fā)送200OK 響應(yīng)消息,說明釋放呼叫.
8.10.27.81.31 將BYE 消息轉(zhuǎn)發(fā)給STB_B.
9.STB_B 向10.27.81.31 發(fā)送200OK 響應(yīng)消息,說明會話結(jié)束.
從功能測試結(jié)果和抓取的實(shí)驗數(shù)據(jù)可知,該系統(tǒng)能夠正常工作,完成要求的功能;SIP 服務(wù)器與SIP 終端也能正常工作,達(dá)到了預(yù)期的效果.
3 總結(jié)
本文設(shè)計了基于STB 和SIP 視頻通信軟件設(shè)計,并對其進(jìn)行測試.在軟件上設(shè)計了STB 與SIP 終端之間的通信流程的建立過程,通過設(shè)置心跳接口和呼叫接口來實(shí)現(xiàn)呼叫的建立,并用C 語言編寫相關(guān)代碼實(shí)現(xiàn).此外還設(shè)計了瀏覽器與視頻通信模塊之間的通信流程圖,并編寫了接口函數(shù).最后對軟件進(jìn)行測試,測試結(jié)果表明系統(tǒng)能夠正常工作.
評論