0 前言
在视频通信信令协议中,SIP 协议凭借自身特有的优点成为研究与应用的热点.有线电视信号已从模拟转向数字,数字机顶盒是其过度的桥梁,能够使模拟电视用户同样观看到数字信号频道的节目.但是目前的数字机顶盒尚没有提供适合于散户安装的简易视频交互通信功能,具备这种功能的数字机顶盒具有极大的市场与应用价值.在此背景下,本文尝试实现数字机顶盒间的简易视频交互,以便在一般机顶盒技术上附加视频电话功能等.
1 总体软件结构
本文使用C 语言编程完成相关软件功能,总体软件结构流程图如图1 所示.前半部分主要是实现STB 与SIP 终端之间的通信连接,后半部分主要是实现浏览器与视频通信模块之间的连接.
视频通信的具体流程如下:
1. 将摄像头连接到SIP 终端上,然后将SIP 终端连接到STB上.
2. 将STB 链接到有线电视网络上,同时将STB 连接到电视机上.
3. 登录STB 的WEB 页面,通过好友界面,选择好友,并发起呼叫.
4. 呼叫接通后,通过电视,开始进行视频通话.
1.1 STB 与SIP 终端之间的通信流程设计
一.STB 与门户之间的通信流程
STB 与门户之间总共有2 个接口:心跳接口和呼叫接口.
(1)心跳接口
接口功能:提供给机顶盒开机时发送信息,给门户,以便门户好管理用户状态.
接口走向:机顶盒→门户Portal.
(2)呼叫接口
接口功能:在门户上呼叫好友之后,门户会返回好友的呼叫信息,而通过这些信息,机顶盒可以呼叫对方的SIP 终端.
接口走向:门户Portal→机顶盒
二.STB 与SIP 之间的流程
STB 通过门户拿到好友的DN 以及好友的SIP 终端的IP 和端口之后,开始与好友的SIP 终端建立连接,当这个连接建立成功之后,就可以通过STB 和sip 终端,进行视频通讯.好友的音视频信息可以通过电视播放出来.
这个流程总共包含2 个接口:心跳接口和呼叫接口.
(1)心跳接口:STB 与自己的SIP 终端之间保持心跳.
接口走向:自己的SIP 终端→ STB
Server 端:STB.
(2)呼叫接口:STB 呼叫好友的SIP 终端.
接口走向:好友的SIP 终端→自己的STB
Server 端:STB
1.2 浏览器与视频通信模块之间的接口函数设计
用户发起呼叫时,呼叫窗口通过浏览器显示来,因此需要设计浏览器与视频通信模块之间的接口函数.需要的函数为库函数和接口函数.库函数为浏览器库函数:D_Browser_AppNotify,从视频通信模块传递状态,触发浏览器工作.接口函数包括:
D_SIP_Play :传递视频通讯参数.
D_SIP_Stop :关闭视频通讯.
D_SIP_SetWindow :设置视频窗口位置.
D_SIP_GetWindow :获得视频窗口显示位置.
D_SIP_AV_Start :开启视频通讯视音频.
D_SIP_AV_Stop :关闭视频通讯的视音频.
2 视频通信软件系统测试
2.1 视频通信功能测试
为了验证软件设计的可行性,本文进行了模拟测试,设备连接如图2 所示.
测试步骤如下:
2.1.1 进入系统
a) 通过导视菜单进入到视频通信的页面,具体步骤是【导视】→【通讯】→【视频通话】;
b) 在该页面选择【视频通讯】选项,进入到视频通信的首页.
c) 页面从左至右分为三个区域:好友列表区.呼叫和删除区以及添加好友区.
2.1.2 添加好友
a) 进入到视频通讯首页,然后点击“添加好友”,进入到好友添加列表.
b) 通过遥控器选中选中输入框“请输入好友的联系方式”,然后通过遥控器上的数字键输入好友的号码.
c) 输入号码后,按遥控器确定键,会提示添加成功.
d) 之后选中页面上的“返回”将返回到好友列表.
2.1.3 视频呼叫
a) 主叫:主叫模式是指通过导视菜单进入到视频通讯首页,并发起对好友的呼叫.进入到视频通讯首页,选择某个好友,点击呼叫按钮,进入到呼叫等待页面.若呼叫失败,将进入到呼叫失败页面;若呼叫成功,则将进入到视频通话的页面.按挂断按钮,将返回到好友列表页面,即视频通讯首页.
b) 被叫是指没有进入到视频通讯模块,这时收到好友的来电请求,弹出来电提示框.接收来显请求,选择全屏模式,则会全屏显示好友的视频.
2.1.4 终止视频通话
a)在浏览器模式下终止视频通话.则可以直接在通话的页面上,选择 “终止视频通话”,则返回视频通话首页.在视频通讯首页,若按遥控器的“退出”键,将退出首页面,返回电视观看状态.
2.2 视频通信SIP 协议测试
在视频通信呼叫过程中,利用Wireshark 抓包软件,即可获得呼叫过程的SIP 信令协议数据.Wireshark 是一个网络封包分析软件,安装使用方便,其功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料,从而可以分析协议.
本文主要测试SIP 信令协议中的会话邀请.应答与终止信令即一个完整的会话建立与终止过程.STB_A 分配一个用于测试的fSipDn = 8012.fSipIp = 10.171.0.2,STB_B 分配的用于测试的fSipDn = 8013.fSipIp = 10.171.0.3.当STB_A 向STB_B 发起呼叫建立会话时,使用wireshark 抓包工抓取数据包.
从实验数据可知STB_A 为主叫方,STB_B 为被叫方,呼叫建立过程为:
1.STB_A 向STB_B 发出INVITE 类的SIP 请求消息,STB_B 注册的域中有一个代理服务器,请求消息被10.27.81.31(代理服务器)接收.
2.10.27.81.31 收到INVITE 类请求消息后,向STB_A 发回状态码为100 的响应消息,说明请求已经收到.
3.10.27.81.31 依据收到的INVITE 类请求消息产生新的INVITE 类请求消息“代理”STB_A 向STB_B 发出INVITE 类请求消息.
4.STB_A 向10.27.81.31 发送ACK 类请求消息,说明已经收到了INVITE 请求消息的最终响应.
5.10.27.81.31 将ACK 消息转发给STB_B,到此为止表明呼叫建立成功.
6.通信结束,STB_A 首先挂机,向代理服务器发出BYE 类请求消息.
7.10.27.81.31 向STB_A 发送200OK 响应消息,说明释放呼叫.
8.10.27.81.31 将BYE 消息转发给STB_B.
9.STB_B 向10.27.81.31 发送200OK 响应消息,说明会话结束.
从功能测试结果和抓取的实验数据可知,该系统能够正常工作,完成要求的功能;SIP 服务器与SIP 终端也能正常工作,达到了预期的效果.
3 总结
本文设计了基于STB 和SIP 视频通信软件设计,并对其进行测试.在软件上设计了STB 与SIP 终端之间的通信流程的建立过程,通过设置心跳接口和呼叫接口来实现呼叫的建立,并用C 语言编写相关代码实现.此外还设计了浏览器与视频通信模块之间的通信流程图,并编写了接口函数.最后对软件进行测试,测试结果表明系统能够正常工作.