基于rudp的音视频可靠传输qos方法、系统的制作方法

文档序号:9847325阅读:611来源:国知局
基于rudp的音视频可靠传输qos方法、系统的制作方法
【技术领域】
[0001 ]本发明涉及音视频传输领域,具体为基于RUDP的音视频可靠传输QOS方法、系统、发送端和接收端。
【背景技术】
[0002]目前,实现可靠数据传递的方法主要采用TCP协议或者SCTP协议。TCP和SCTP都是基于流的传输协议,都有十分复杂的保证可靠传输的机制,应用于通信中时都将不可避免地增加系统的开销并降低通信效率,而UDP虽然开销小、速率高,但它是基于消息的不可靠传递协议,虽然音视频传输允许一定的丢包率,但是媒体转发系统对视频传输却要求具备一定的可靠性,为此就自然地考虑到在UDP的基础上增加一些为保证可靠数据传递所必需的功能,使其成为一个基于消息的可靠传递协议这就是RUDP协议。
[0003]在RUDP协议主要是解决TCP协议和UDP协议存在的弊端,TCP协议是面向有连接的传输协议,其传输的数据通过三次握手和滑动窗口协议实现了数据的可靠传输,但TCP协议由于需要三次握手,因此其传输实时性比较差,很难应用于实时的数据传输;UDP协议刚好于TCP协议相反,UDP协议是面向无连接的传输协议,数据只是在不断地进行发送,而没有对数据进行丢包和排序处理,不能进行网络的QOS保证,而目前市场上的RUDP的音视频可靠传输,在传输过程中存在网络传输丢包、抖动和乱序的现象,对服务质量产生很多不好的影响。
[0004]随着移动互联网的快速发展以及媒体转发终端性能的逐步提高,媒体转发终端间进行实时音视频通讯成为未来移动互联网发展的一个重要方向。那么如何保证媒体转发终端之间实时音视频通讯的服务质量成为一个必须加以重视的问题。实时音视频通讯包括采集、编码、网络传输、解码、播放等环节,其中采集、编解码和播放是不受网络条件影响的,只受限于编解码算法,播放策略等因素,网络传输的丢包、抖动和乱序对qos的影响最为重大。
[0005]TCP的三次握手协议实现了数据的可靠传输,但TCP协议由于需要三次握手,受网络延迟、拥塞和丢包的影响,其传输实时性比较差,很难应用于实时的数据传输。

【发明内容】

[0006]本发明的目的在于提供基于RUDP的音视频可靠传输QOS方法、系统、发送端和接收端,以解决上述【背景技术】中提出的问题。
[0007]为实现上述目的,本发明提供一种基于RUDP的音视频可靠传输QOS方法,其包括:
[0008]发送端根据音视频数据长度将音视频打包成一个以上的RUDP包,每个RUDP包中的数据均对应不同帧的音视频内容;
[0009]发送端将RUDP包通过udp socket发送,并同时将所述RUDP包拷贝到发送指令对应循环buff er中,以备发送失败时调用重发;
[0010]接收端接收所述RUDP包的数据,并同时将接收的所述数据拷贝到接收指令对应循环buffer中;[0011 ]接收端根据循环buf f er中节点填充情况和节点接收时间确定接收指令对应循环buff er中数据的处理方式,所述处理方式包括:丢弃、解码或重发。
[0012]在一些实施例中,优选为,所述发送指令对应循环buffer的节点数、所述接收指令对应循环buffer的节点数相等,且均为65536的整数倍。
[0013]在一些实施例中,优选为,所述发送端根据音视频数据长度将音视频打包成一个以上的RUDP包包括:
[0014]分析所述音视频的数据长度;
[0015]当所述数据长度大于MTU时,将数据长度大于MTU的帧切割,分块封装到多个RUDP包中;
[0016]当所述数据长度小于MTU时,将数据直接封装为RUDP包中。
[0017]在一些实施例中,优选为,所述发送端将RUDP包通过udp socket发送,并同时将所述RUDP包拷贝到发送指令对应循环buffer中,以备发送失败时调用重发包括:
[0018]从打包的多个RUDP包中提取一个RUDP包;
[0019]将所述RUDP包的seq设置为send_seq,通过udp socket发送给接收端;
[°02°] 在发送同时,将所述RUDP包拷贝到所述send_seq对应节点的循环buffer中,以备接收端未成功接收时,调用重发。
[0021 ]在一些实施例中,优选为,所述接收端接收所述RUDP包的数据,并同时将接收的所述数据拷贝到接收指令对应循环buf f er中包括:
[0022]接收端接收所述RUDP包的数据;
[0023]解析数据的RUDP包头,设置received_seq,并将数据拷贝到received_seq对应循环buffer中,并将该节点的数据flag设置为true;
[0024]若received_seq对应的RUDP包的到达时间晚于end_seq对应包的到达时间,则更新end_s eq,否则不更新。
[0025]在一些实施例中,优选为,接收端根据循环buffer中节点填充情况和节点接收时间确定接收指令对应循环buffer中数据的处理方式包括:
[0026]当收到第一个所述RUDP包的数据时,包头的start_seq和end_seq都设置为received_seq;
[0027]当收到非第一个所述RUDP包时,进行如下操作:
[OO28 ]以设定时间段为间隔单位,循环扫描s tart_s e q和end_s e q对应的每个节点;
[0029 ]若当前时间和s tar t_s e q对应数据到达时间的差值大于第一阈值,则丢弃s tar t_seq和end_seq之间的每个节点的数据,将每个节点的数据flag设置为€3186,更新8丨31"1:_seq为end_seq;
[0030]若当前时间和start_seq对应数据到达时间的小于第一阈值,且start_seq对应的节点的下一个节点的数据falg为true,则将该节点的数据送到解码单元,同时将start_seq更新为该节点的seq,并将该节点的flag设置为false;
[OO31 ] 若flag为false,且当前时间和start_seq对应的数据到达时间的差值小于第二阈值,则该请求发送端将seq对应的RUDP数据重发。
[0032]本发明还提供了一种基于RUDP的音视频可靠传输QOS的发送端,其包括:
[0033]分析模块,用于分析所述音视频的数据长度;
[0034]打包模块,用于根据分析模块分析的数据长度来对音视频进行打包,当所述数据长度大于MTU时,将数据长度大于MTU的帧切割,分块封装到多个RUDP包中;当所述数据长度小于MTU时,将数据直接封装为RUDP包中;
[0035]发送模块,用于将RUDP包通过udp socket发送;
[0036]缓存模块,用于在所述发送模块发送的同时,将所述RUDP包拷贝到发送指令对应循环buff er中,以备发送失败时调用重发;
[0037]接收模块,用于接收发送失败的信息,并将所述信息发送给发送模块。
[0038]本发明还提供了一种基于RUDP的音视频可靠传输QOS的接收端,其包括:
[0039]接收单元,用于接收发送端发送的RUDP包的数据;
[0040]缓存单元,用于将接收的所述数据拷贝到接收指令对应循环buffer中;
[0041 ]判断单元,用于根据循环buf f er中节点填充情况和节点接收时间确定接收指令对应循环buffer中数据的处理方式,所述处理方式包括:丢弃、解码或重发;
[0042]解码单元,用于对RUDP包的数据进行解码获取音视频;
[0043]发送单元,用于向发送端发送重发信息。
[0044]在一些实施例中,优选为,所述判断单元的执行方式为:
[0045]当收到第一个所述RUDP包的数据时,包头的start_seq和end_seq都设置为received_seq;
[0046]当收到非第一个所述RUDP包时,进行如下操作:
[0047 ]以设定时间段为间隔单位,循环扫描s tart_s e q和end_s e q对应的每个节点;
[0048]若当前时间和start_seq对应数据到达时间的差值大于第一阈值,则丢弃start_seq和end_seq之间的每个节点的数据,将每个节点的数据flag设
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1