一种基于rtp的数据传输方法

文档序号:7927861阅读:181来源:国知局
专利名称:一种基于rtp的数据传输方法
技术领域
本发明属于计算机网络多媒体通信技术领域,尤其涉及一种基于RTP的数 据传输方法。
背景技术
随着互联网技术的发展,流媒体技术的应用越来越广泛,流媒体传输具有 实时性和连续性的特点。采用不同的码率传输,可以使用户在几十kbit/s低 带宽到几十Mbit/s高带宽的不同网络环境中,都能在线欣赏到较高质量的音、 视频节目。针对流媒体数据的特点,由于音、视频数据少量的差错和丢失对最 终播放质量的影响较小,为了避免采用可靠传输带来的时延,提高数据的实时 性,因此采用实时传输协议RTP。
实时传输协议RTP是专门用于因特网上实时多媒体数据传输的一种协议, 一般是在UDP数据包之前建立一个RTP包头,其中包含了一些保证数据实时连 续性的信息(如序列号、时间戳等),RTP被定义为在一对一或一对多的传输模 式下工作,提供时间信息和流同步。RTP协议本身不提供流量控制和拥塞控制 功能,它靠一个实时传输控制协议(RTCP)来实现。RTCP周期性地统计数据包传 输时的丢失情况等信息,服务器根据这些反馈信息来制定流量控制的策略,改 变传输码率甚至负载类型,大大提高了实时数据的传输性能。
流媒体系统是无法忽略网络环境的变化所带来的影响的,这些变化包括 数据包"乱序到达",先发送数据包有可能比后发送的数据包更迟到达,而这 对于一个连续序列的实时音、视频数据是非常致命的。

发明内容
本发明的目的在于,提供一种基于RTP的数据传输方法,利用排序算法来 实现数据排序处理和输出,避免数据包的乱序问题。
本发明的技术方案是, 一种基于RTP的数据传输方法,其特征是所述传输 方法包括下列顺序执行的步骤
步骤l:设置滑动窗口的大小为n个数据包;
步骤2:将收到的数据包插入到滑动窗口并进行排序;
步骤3:当排序的数据包的最大序列号与最小序列号之差大于等于n时, 执行步骤4;否则,跳到步骤2;
步骤4:从序列号最小的数据包的开始,输出排好的数据包;
步骤5:如果输出的数据包的序列号不连续,则将此前的数据包的序列号 作为下次排序的最小序列号;
步骤6:如果输出的数据包序列号连续,但不是n个序列号连续的数据包, 则输出序列号连续的数据包,直到遇到不连续的数据包为止;
步骤7:如果输出的数据包是n个序列号连续的数据包,则输出前n-l个 数据包,第n个数据包作为下次排序的最小序列号数据包,并跳到步骤2;
步骤8:如果序列号开始不连续的数据包与当前排序的数据包的最大序列 号之差小于n,则跳到步骤2;否则执行步骤9;
步骤9:认为该数据包已丢失,并跳到步骤2。
所述将收到的数据包插入到滑动窗口并进行排序的方法是
如果待插入的数据包的序列号小于当前排序的数据包的最小序列号,处理
此数据包为丢包,不再参与排序;
如果待插入的数据包的序列号大于等于当前排序的数据包的最大序列号,
将待插入的数据包插入到当前排序的数据包序列的最后一位;
如果待插入的数据包的序列号大于等于当前排序的数据包的最小序列号,
并且小于当前排序的数据包的最大序列号,将待插入的数据包的序列号,依次 与当前排序的数据包的序列号进行比较,顺序是按照当前排序的数据包的序列 号由大到小的顺序;在比较时,当发现第一个当前排序的数据包的序列号大于 待插入的数据包的序列号时,将待插入的数据包插入到所发现的数据包的位 置,并将所发现的数据包后移一位。
本发明的效果在于,克服流媒体系统无法忽略网络环境的变化所带来的 数据传输过程中数据包的乱序问题,提高实时音、视频数据的传输效率。


图1是视频帧发送过程示意图。
图2是基于RTP的数据传输方法的流程图。 图3是视频帧接收过程示意图。
具体实施例方式
下面结合附图,对优选实施例作详细说明。应该强调的是,下述说明仅 仅是示例性的,而不是为了限制本发明的范围及其应用。
流媒体系统是由各种不同的互相通信交互的软件系统构成的, 一个最基本 的流媒体系统必须包括编码器、服务器和播放器三个模块,如图1所示。模块 之间通过特定的协议互相通信,并按照特定格式互相交换数据。其中编码器用 来将原始的音、视频转换成合适的流格式文件,服务器向客户端发送编码后的 媒体流,客户端播放器则负责解码和播放接收到的媒体数据。
服务器负责将编码数据封装成RTP数据包发送到网络中。每次获取一帧数 据后,将其分成几个RTP数据包,并将时间戳和序列号添加到RTP包头,属于 同一帧的数据包具有相同的时间戳。 一旦到达数据包所对应播放的时间后,服 务器便将这一帧的音视频数据包发送出去,然后再读取下一帧数据。
依靠序列号来调整到达数据包的顺序,使之和发送数据一致才可以正确获
取我们需要的数据。包含音、视频数据的RTP数据包经互联网络传输到客户端
后,先进入一个缓冲队列等待,这个缓冲队列中的所有数据包按照包头的序列 号排序,如果有迟到的包,则需按序列号重新插入到正确的位置上,这样就避 免乱序的问题。
图2是RTP中实现媒体同步的方法的流程图。基于上面的思路,结合图2,
本发明的具体步骤是
步骤201:设置滑动窗口的大小为n个数据包。
步骤202:将收到的数据包插入到滑动窗口并进行数据包排序。其中,数 据包排序按照下述方式进行
如果待插入的数据包的序列号小于当前排序的数据包的最小序列号,处理
此数据包为丢包,不再参与排序;
如果待插入的数据包的序列号大于等于当前排序的数据包的最大序列号,
将待插入的数据包插入到当前排序的数据包序列的最后一位;
如果待插入的数据包的序列号大于等于当前排序的数据包的最小序列号, 并且小于当前排序的数据包的最大序列号,将待插入的数据包的序列号,依次 与当前排序的数据包的序列号进行比较,顺序是按照当前排序的数据包的序列 号由大到小的顺序;在比较时,当发现第一个当前排序的数据包的序列号大于 待插入的数据包的序列号时,将待插入的数据包插入到所发现的数据包的位 置,并将所发现的数据包后移一位。
步骤203:当排序的数据包的最大序列号与最小序列号之差大于等于n时, 执行步骤204;否则,跳到步骤202。
步骤204:从序列号最小的数据包的开始,输出排好的数据包。 步骤205:如果输出的数据包的序列号不连续,则将此前的数据包的序列 号作为下次排序的最小序列号。
步骤206:如果输出的数据包序列号连续,但不是n个序列号连续的数据
包,则输出序列号连续的数据包,直到遇到不连续的数据包为止。
步骤207:如果输出的数据包是n个序列号连续的数据包,则输出前n-l 个数据包,第n个数据包作为下次排序的最小序列号数据包,并跳到步骤202。
步骤208:如果序列号开始不连续的数据包与当前排序的数据包的最大序 列号之差小于n,则跳到步骤202;否则执行步骤209。
步骤209:认为该数据包已丢失,并跳到步骤202。
图3是视频帧接收过程示意图。客户端每次从队列头部读取一帧的数据, 从包头的时间戳中解出该帧的播放时间,然后进行音、视频同步处理。同步 后的数据将送入解码器进行解码,解码后的数据被送入一个循环读取的缓存 中等待。 一旦该帧的播放时间到达,解码数据就被从缓存中取出,送入播放 模块驱动底层硬件设备进行显示或播放。
以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不 局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可 轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明 的保护范围应该以权利要求的保护范围为准。
权利要求
1、一种基于RTP的数据传输方法,其特征是所述传输方法包括下列顺序执行的步骤步骤1设置滑动窗口的大小为n个数据包;步骤2将收到的数据包插入到滑动窗口并进行排序;步骤3当排序的数据包的最大序列号与最小序列号之差大于等于n时,执行步骤4;否则,跳到步骤2;步骤4从序列号最小的数据包的开始,输出排好的数据包;步骤5如果输出的数据包的序列号不连续,则将此前的数据包的序列号作为下次排序的最小序列号;步骤6如果输出的数据包序列号连续,但不是n个序列号连续的数据包,则输出序列号连续的数据包,直到遇到不连续的数据包为止;步骤7如果输出的数据包是n个序列号连续的数据包,则输出前n-1个数据包,第n个数据包作为下次排序的最小序列号数据包,并跳到步骤2;步骤8如果序列号开始不连续的数据包与当前排序的数据包的最大序列号之差小于n,则跳到步骤2;否则执行步骤9;步骤9认为该数据包已丢失,并跳到步骤2。
2、 根据权利要求1所述的一种基于RTP的数据传输方法,其特征是所述将收到的数据包插入到滑动窗口并进行排序的方法是如果待插入的数据包的序列号小于当前排序的数据包的最小序列号,处理此数据包为丢包,不再参与排序;如果待插入的数据包的序列号大于等于当前排序的数据包的最大序列号,将待插入的数据包插入到当前排序的数据包序列的最后一位; 如果待插入的数据包的序列号大于等于当前排序的数据包的最小序列号,并 且小于当前排序的数据包的最大序列号,将待插入的数据包的序列号,依次与当 前排序的数据包的序列号进行比较,顺序是按照当前排序的数据包的序列号由大 到小的顺序;在比较时,当发现第一个当前排序的数据包的序列号大于待插入的 数据包的序列号时,将待插入的数据包插入到所发现的数据包的位置,并将所发 现的数据包后移一位。
全文摘要
本发明公开了计算机网络多媒体通信技术领域中的一种基于RTP的数据传输方法。技术方案是,设滑动窗口的大小为n个数据包,将收到的数据包插入滑动窗口并排序;当参与排序的数据包的最大序列号与最小序列号之差大于或等于n时,开始输出排好的数据包,输出从最小序列号的数据包开始;如序列号连续则可以输出;如不连续,则此前的数据包作为下次排序的最小序列号;如序列号开始不连续的数据包与当前排序的数据包的最大序列号之差大于n,则认为该数据包已丢失;如n个数据包序列号连续,则输出前n-1个数据包,第n个数据包作为下次排序的最小序列号数据包。本发明避免了数据包传输过程的乱序问题。
文档编号H04L1/00GK101394252SQ20081022649
公开日2009年3月25日 申请日期2008年11月12日 优先权日2008年11月12日
发明者圳 姜 申请人:北京佳讯飞鸿电气股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1