SIP音视频会议中进行音视频媒体传输的方法
技术领域
本发明属于媒体数据网络传输技术领域,具体涉及一种SIP音视频会议中建立媒体传输的方法。
背景技术
SIP是会话初始化协议的缩写,是一种用于建立、修改和终止VOIP电话通话的IP电话信号协议。随着互联网技术的迅猛发展,基于SIP等多媒体信令协议的语音和视频会议通信也得到了广泛应用。在当前IPv4环境下,由于我国IP地址严重缺乏,用户必须使用带有NAT功能的网络接入设备,从而使用私有地址扩展其地址空间。NAT设备带来一个问题,处于私网中的SIP用户,需要先获取其公网IP+Port,然后告知会议服务器,才能完成与服务器的媒体建立过程。
私网终端获取起公网地址,必须在NAT设备之外建立一个STUN服务器,或者由会议服务器提供STUN服务。而对于对称型的NAT设备,由于私网设备每次连接不同NAT外部地址时,NAT分配的端口都会改变,因此必须由会议服务器提供STUN服务。
由于终端获取其公网地址的过程,给终端和服务器都会增加处理开销,或者是需要建STUN服务器,本发明因此而来。
发明内容
本发明目的在于提供一种SIP音视频会议中建立媒体传输的方法,简化了终端和服务器媒体流建立的处理过程,降低了服务器的性能开销。
为了精简现有技术中的处理流程,本发明提供的技术方案是:
一种SIP音视频会议中进行音视频媒体传输的方法,用于私网内的终端盒公网会议服务器建立媒体连接进行传输音视频媒体流,其特征在于所述方法包括以下步骤:
(1)终端作为客户端发起呼叫时,先生成包括编解码信息和音视频媒体地址的SDPoffer,并为音视频媒体流分配随机生成32位的流ID,记录到请求消息中,然后将该消息发送至会议服务器;
(2)会议服务器收到消息后,取出其中客户端的音视频流ID,记录到会议会话中,并生成SDPanswer,填入到应答消息中,发送至终端;
(3)终端收到应答消息后,取出服务器端的媒体地址,开始生成音视频媒体流,并在媒体流RTP包的ssrc字段填入之前分配好的流ID,发送至服务器;
(4)服务器收到终端的媒体流后,比较其流ID和之前记录的流ID是否一致。
本发明所述方法呼叫双方消息遵循offer/answer模型,双方媒体流遵循RTP协议。
当其流ID和之前记录的流ID一致时则表示音视频媒体传输合法;否则中断音视频媒体的继续传输。由于终端在私网中,其发出的媒体流经过NAT设备转发,私网地址已被转换为公网地址,服务器通过获取媒体流的源地址,作为其媒体流的目的地址。
本发明的技术方案采取如下的步骤简化媒体建立过程:
A、假定终端的INVITE和服务器的200OK分别携带SDPOffer和Answer。主叫发起呼叫时,先获取本地私网地址,并为音视频媒体分配32位的流ID,写入到SDP,携带至会议服务器;
B、会议服务器收到呼叫后,将SDPOffer中的流ID保存下来,然后获取本地媒体地址,生成SDPAnswer,通过200OK消息发送至终端;
C、终端收到SDPAnswer后,取出音视频媒体地址,开始生成音视频数据,通过RTP流发送到服务器的音视频媒体地址,其中RTP包的ssrc字段需要赋值为之前分配的流ID;
D、由于终端的媒体RTP包的IP+Port在经过NAT设备时,会转换为公网IP+Port,服务器收到终端的媒体数据(RTP包)后,读取其ssrc值,与之前记录的流ID是否一致,一致则取出该媒体流的源地址,在其后续发送媒体数据至终端时,以该源地址作为的终端的目的地址。
本发明提供了一种SIP音视频会议中建立媒体传输的方法,在私网终端和公网会议服务器之间使用SDP协议进行媒体协商时,终端的SDP携带媒体地址为其私网地址(IP+Port),并在SDP媒体属性中加入流媒体ID,该ID作为后续媒体流的标识。在终端获取到服务器的媒体地址后,直接向其发送音视频媒体流。而服务器接收到该媒体流后,判断其流ID是否和终端SDP中携带的是否相同,相同表示该媒体流合法;而服务器从媒体流中获取到媒体流的源地址后,把该地址作为服务器媒体流的目的地址,这样就建立了私网终端和公网服务器媒体连接建立的过程。该方法为终端省略了获取其公网地址IP+Port的过程,并且也不需要用于获取公网地址的STUN服务器,简化了媒体流建立的过程。
相对于现有技术中的方案,本发明的优点是:
本发明利用了NAT设备对私网地址转换为公网地址的特点,简化了终端和服务器建立媒体传输的过程。有如下优点:1、无需设置STUN服务器,无需会议服务器提供STUN服务,减少服务器端的性能消耗;2、减化终端的处理流程,减少加入会议的时间;3、使用SDP的扩展属性和RTP的ssrc属性,不会破坏其标准性。
附图说明
下面结合附图及实施例对本发明作进一步描述:
图1是本发明实施例的系统网络架构示意图;
图2是本发明实施例终端的处理流程图;
图3是本发明实施例服务器端的处理流程图。
具体实施方式
以下结合具体实施例对上述方案做进一步说明。应理解,这些实施例是用于说明本发明而不限于限制本发明的范围。实施例中采用的实施条件可以根据具体厂家的条件做进一步调整,未注明的实施条件通常为常规实验中的条件。
实施例
如图所示,本发明SIP音视频会议中建立媒体连接的方法可以应用于私网内的终端盒公网会议服务器建立媒体连接,以终端主动加入会议为例,所述方法包括以下步骤:
(1)终端发起呼叫时,先生成SDPoffer(包括编解码信息、音视频媒体地址等),并为音视频媒体流分配随机生成32位的流ID,记录到请求消息中,然后将该消息发送至会议服务器;
(2)会议服务器收到消息后,取出其中客户端的音视频流ID,记录到会议会话中,并生成SDPanswer,填入到应答消息中,发送至终端;
(3)终端收到应答消息后,取出服务器端的媒体地址,开始生成音视频媒体流,并在媒体流RTP包的ssrc字段填入之前分配好的流ID,发送至服务器;
(4)服务器收到终端的媒体流后,比较其流ID和之前记录的是否一致,一致则表示合法。由于终端在私网中,其发出的媒体流经过NAT设备转发,私网地址已被转换为公网地址,服务器通过获取媒体流的源地址,作为其媒体流的目的地址。
参见附图1,它是本系统的网络架构图。由图1可见,终端发送音视频数据发送到服务器,需要经过NAT设备,其RTP包中的IP+Port会转换为公网IP+Port。
参见附图2,SIP终端向会议服务器发起呼叫时,获取的私网地址为172.16.123.156:15001,并生成流ID23309628,填入到SDP中,发送Invite(Offer)消息至服务器。
v=0
o=term00INIP4172.16.123.156
s=-
c=INIP4172.16.123.156
t=00
m=audio15001RTP/AVP08
a=streamid:23309628
a=rtpmap:0PCMU/8000
a=rtpmap:8PCMA/8000
a=ptime:20
参见附图3,服务器收到Invite消息后,取出SDP中的streamid并保存。然后生成SDPAnswer,发送200OK(Answer)至终端。
v=0
o=server00INIP4211.1525
s=-
c=INIP4211.152.53.12
t=00
m=audio12100RTP/AVP08
a=rtpmap:0PCMU/8000
a=ptime:20
参见附图3,终端收到200OK后,取出SDP中的服务器媒体地址211.152.53.12:12100,同时开始生成音频数据,打包成RTP包,并在ssrc中填入streamid23309628,然后发送到该地址。而该数据包经过NAT设备时,源IP+Port会转换为61.235.57.156:17282,然后转发至服务器。
参见附图3,服务器收到媒体数据后,取出RTP包的ssrc,发现和之前保存的streamid相同,说明改媒体流合法。取出该音频RTP包的源地址61.235.57.156:17282并保存。服务器后续需要发送音频数据到该终端时,会直接发送数据到61.235.57.156:17282。
上述实例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人是能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所做的等效变换或修饰,都应涵盖在本发明的保护范围之内。