QoS自适应的P2P流媒体数据组织与传输系统及方法

文档序号:7647280阅读:182来源:国知局
专利名称:QoS自适应的P2P流媒体数据组织与传输系统及方法
技术领域
本发明涉及互联网流媒体传输系统及方法,特别是关于一种QoS(服务质量)自适应的P2P(对等网络)流媒体数据组织与传输系统及方法。
背景技术
流媒体是指用户通过网络边下载边播放多媒体数据的一种工作方式,其最大的好处之一就是用户不需要花费很长时间将多媒体数据全部下载到本地后才能开始播放,而仅需将起始若干秒的数据先下载到本地缓冲区后就可以开始播放,后续收到的媒体数据会源源不断地填充到该缓冲区中,从而维持播放的连续性。与下载播放系统相比,流媒体系统需要很好地将多媒体的编解码技术与传输技术进行结合,才能够确保用户在复杂的网络环境下也能得到连续和稳定的播放质量。
流媒体传输具有实时性、连续性和数据依赖性等特点。实时性要求网络中传输的各视频帧数据必须在特定的播放时限之前到达接收方;连续性要求各视频帧数据必须按照一定的顺序进行播放。压缩的视频数据具有两种类型的数据依赖性帧间依赖要求接收方在解码一个优先级较低的视频帧之前必须已解码它所依赖的其它优先级较高的视频帧;帧内依赖要求接收方最好在全部接收到组成一帧的所有数据包之后再进行解码,否则会引起解码错误从而导致显示画面图像破碎等现象,甚至引起解码器程序崩溃而中止播放。
一个好的流媒体系统应尽量满足上述这些特性所带来的QoS(服务质量)要求。然而由于目前的互联网还主要是一个“尽力而为”的异构网络,其信道行为如带宽、时延和丢包率等都具有一定的动态性和不可预测性,因此仍无法提供流媒体传输所需要的QoS保证。
近年来,P2P(Peer-to-Peer,对等网络)技术的兴起和发展为解决互联网流媒体的QoS问题带来了新的希望,基于P2P技术的系统和应用逐渐在网络流媒体市场中占据了主导地位。P2P是一种用于不同节点之间直接交换数据或服务的技术,它打破了传统的客户机/服务器模式,强调节点之间的对等性,即参与到系统中的每一个节点都同时兼有服务器和客户机两种身份,在享受别的节点所提供资源和服务的同时也要为其它节点提供相应的资源和服务。这些特性就使得P2P系统的服务能力能够随需求的增长而自然增长,从而具有与生俱来的可扩展性,可用于解决传统客户机/服务器网络结构中服务器过载和资源瓶颈等问题。
虽然P2P技术的引入能够在一定程度上缓减互联网流媒体应用中存在的部分问题,例如网络拥塞和服务器带宽瓶颈等,然而现有技术的P2P流媒体系统仍然存在着诸多问题有待完善和解决,主要体现在以下几个方面。
从流媒体数据的组织上来说,现有技术大致采用两种方法一种是将复用后的音视频数据划分为许多为长度相等或不等的数据块,然后以数据块为单位进行传输。这种数据块的划分没有考虑音视频帧的边界问题,因此在有数据块丢失的情况下会导致其它已收到数据块中位于边界上的残缺帧数据无法解码或解码失败;另外在这种方法中将音频和视频数据复用在一起进行传输,当有数据块丢失时音频数据和视频数据也一起丢失,而由于人的感观对于音频比视频更为敏感,因而音频信号的不连续会给人们带来更为刺耳和不舒服的感觉。另外一种方法是将音频数据和视频数据分开来分别进行打包,例如采用基于RTP协议(实时传输协议)的打包格式,并在打包的过程中考虑音视频帧的边界问题,尽量不要把不同帧的各一部分打到同一个包中。这种方法虽然为将音视频分开传输提供了便利,但并没有保障音频包优先传输的措施;另外对于视频帧来说也没有优先级排序和保证完整帧传输的机制,随机的包丢失仍然会使得接收端因为视频帧数据不完整或者依赖性等问题而出现解码故障。
从流媒体数据的传输上来说,现有技术中基于P2P的流媒体传输方案大都倾向于为所有参与到系统中的节点提供相同且完好的QoS服务,即希望每一个参与节点都能够在相应的时间约束条件下完整地接收到从原始流媒体服务器发布出来的媒体数据。然而由于互联网本身的异构性和尽力而为等特性,这种愿望实际上是很难实现的。例如某些节点的接入带宽往往会小于它们所请求节目的平均码率,或者即使某个节点的接入带宽大于它所请求节目的平均码率,但当前为它提供数据的所有上游节点的当前可用上行带宽之和也很可能会小于该平均码率。除此之外,互联网中各节点之间的实际可用带宽以及流媒体节目的码率事实上也是随时间而动态变化的,个别时间激增的码率往往会超过端到端的传输带宽。在所有这些情况下,无论是采用不可靠的UDP(用户数据报协议)还是采用可靠的TCP(传输控制协议)来进行传输,都不可能保证所有媒体数据可靠、按时地到达接收端。采用UDP不可避免地会带来传输中数据包的随机丢失;而采用TCP虽然可保证已选择发送数据的可靠传输,但在P2P中继节点处却可能因为上下行带宽的不匹配而引起流媒体数据缓冲区溢出,从而导致随机性的数据包丢失。上述数据包的随机性丢失使得接收端即使在接收到部分数据的情况下也仍然无法正确解码,从而不仅浪费带宽资源而且会导致播放质量的下降甚至播放失败。

发明内容
针对上述问题,本发明的目的是提供一种QoS自适应的P2P流媒体数据组织与传输系统及方法,本发明提供的系统和方法能够在尽量不浪费网络带宽等资源的情况下,自适应地为网络中不同的用户节点分别提供适合于其当前接入带宽和网络状况的流媒体服务质量(QoS)。
为实现上述目的,本发明采取以下技术方案一种QoS自适应的P2P流媒体数据组织与传输系统,其特征在于它包括流媒体服务器、P2P种子节点、P2P节点和流媒体播放器四个部分;所述流媒体服务器与P2P种子节点相连,并向后者提供流媒体数据源;所述P2P种子节点一方面与流媒体服务器相连,从中接收当前所发布频道的媒体数据然后缓存,另一方面通过互联网与多个P2P节点相连,将其当前所缓存的媒体数据向后者转发;另外它还与流媒体播放器相连,并将当前缓存的媒体数据发送至流媒体播放器供其进行播放;所述P2P节点一方面与多个其它的P2P节点或P2P种子节点相连,从中接收媒体数据然后缓存,且向其它P2P节点转发缓存的媒体数据;另一方面与流媒体播放器相连,并将当前缓存的媒体数据发送至流媒体播放器供其进行播放;所述流媒体播放器与P2P节点相连,从中接收媒体数据然后解码播放。
所述P2P种子节点至少包括数据重组模块、媒体缓冲区和数据还原模块;其中数据重组模块一方面与流媒体服务器相连,另一方面与媒体缓冲区相连;媒体缓冲区一方面与数据重组模块相连,另一方面还与数据还原模块以及其它P2P节点相连;数据还原模块一方面与媒体缓冲区相连,另一方面与流媒体播放器相连。
所述P2P节点至少包括媒体缓冲区和数据还原模块,其中媒体缓冲区一方面与其它P2P节点或P2P种子节点相连,另一方面与本节点中的数据还原模块相连;数据还原模块一方面与媒体缓冲区相连,另一方面与流媒体播放器相连。
所述媒体缓冲区包含一系列指向频道对象的指针,每个频道对象包含频道头和频道缓冲区两部分,其中频道头至少包含以下8个字段(1)频道标识符ChID在整个系统中唯一标识某个频道;(2)起始时延StDelay从播放器提出播放请求到实际开始播放第一帧媒体数据之间的起始时间延迟;(3)缓冲区长度ChBufLen;频道缓冲区中缓存的最大帧组GOP数;(4)GOP帧数GOPFrames当前频道每一个GOP中应包含的总帧数;(5)GOP持续时间GOPDur当前频道中每一个GOP的播放持续时间;(6)缓冲区持续时间BufDur每个GOP在缓冲区中预计停留的时间,其值为频道缓冲区长度与GOP持续时间的乘积;(7)频道创建时间ChInitTime当前频道对象在当前P2P节点中的创建时间;(8)频道描述信息ChDesc指向一个描述频道媒体会话信息的数据块;频道缓冲区指向一个先进先出形式的GOP缓冲队列,队列中每个元素指向一个GOP对象,每个GOP对象包含GOP头和帧缓冲区两部分,其中GOP头至少包含以下4个字段(1)GOP序列号GOPSeqNo连续的GOP其序列号按顺序递增;(2)GOP播放时间GOPPlayTimeGOP对象的预计播放时间;(3)GOP删除时间GOPDelTimeGOP对象预计离开GOP缓冲队列的时间;(4)当前帧数CurrFramesGOP对象中当前实际包含的帧数,其中每一帧数据必须完整;帧缓冲区指向一个长度为TotalFrames的帧缓冲队列,队列中每个元素指向一个帧对象,其顺序按照帧对象的帧编号从小到大排列,在将某个帧对象加入到帧缓冲队列时,必须保证帧编号小于该帧的所有其它帧对象都已经加入,而且当前帧对象中的帧数据必须完整接收后才能加入,否则相应的帧对象指针设为空;每个帧对象包含固定长度的帧头和帧数据两部分,其中帧头部分至少包含以下5个字段(1)帧编号FrameNo一个GOP中所有帧的帧编号按优先级顺序从小到大依次递增排列,优先级最高的帧序列号为1;(2)帧原始编号FrameOriNoGOP中各帧在未进行优先级排序之前的原始编号,按照解码顺序从1开始递增,如果存在虚拟音频帧则假定该虚拟音频帧的解码顺序优先于所有视频帧;(3)帧类型FrameType;当前帧的编码类型;(4)时间戳TimeStamp当前帧的展示时间戳;(5)帧长FrameLen帧数据部分的长度;帧数据部分包含组成一帧的完整数据。
所述数据重组模块负责从流媒体服务器接收当前所发布频道的符合现有技术格式的媒体数据,并将其转换和重组为符合所述媒体缓冲区数据结构的数据后提交媒体缓冲区进行缓存。
所述数据还原模块负责将媒体缓冲区中缓存的媒体数据重新还原为符合现有技术格式的媒体数据并向流媒体播放器进行发送。
一种QoS自适应的P2P流媒体数据组织与传输方法,其特征在于包括频道发布和频道点播两种操作过程。
所述频道发布过程的操作步骤如下(1)在P2P种子节点的媒体缓冲区中创建一个新的频道对象及其GOP缓冲队列,将频道对象中频道创建时间字段的值设为当前系统时间,通过程序参数或与流媒体服务器交互来获得其实时延、频道缓冲区长度、GOP帧数、GOP持续时间和缓冲区持续时间等字段的值以及相关频道描述信息;(2)创建新的GOP对象并加入到上述GOP缓冲队列,随机生成一个GOP序列号,将GOP播放时间字段的值设为频道创建时间与起始时延之和,将GOP删除时间字段的值设为频道创建时间与缓冲区持续时间之和,将当前帧数字段的值设为0;(3)与流媒体服务器建立连接并从中接收相应频道一个GOP的媒体数据;(4)调用数据重组模块将上述接收到的GOP中的各帧数据转换为帧对象格式后进行优先级排序,并依次加入到当前GOP对象的帧缓冲队列,每加入一个帧对象,相应GOP对象中当前帧数字段值加一;(5)判断GOP缓冲队列是否已满,未满则转至步骤(6),否则转至步骤(9);(6)创建一个新的GOP对象并加入GOP缓冲队列,其中GOP序列号在前一个GOP的基础上加一,GOP播放时间和GOP删除时间字段的值分别在前一个GOP相应字段的基础上递增一个GOP持续时间值,当前帧数字段赋值为0;(7)继续从流媒体服务器10接收相应频道下一个GOP的媒体数据;(8)调用数据重组模块将上述接收到的GOP中的各帧数据转换为帧对象格式后进行优先级排序,并依次加入当前GOP对象的帧缓冲队列,每加入一个帧对象,相应GOP对象中当前帧数字段值加一;(9)判断当前时间是否超过GOP缓冲队列中第一个GOP对象的GOP删除时间,如果超过则将该GOP对象移出队列并删除;转至步骤(5)。
当P2P种子节点从流媒体服务器中接收到一个GOP的媒体数据时,如果存在音频数据,则将该GOP时间间隔内所有音频数据拼装为一个虚拟音频帧;在拼装虚拟音频帧时仍保留原先各音频数据块中包括时间戳在内的头信息,拼装后虚拟音频帧的时间戳字段采用所有这些音频数据块中最早的时间戳。
当P2P种子节点调用数据重组模块对接收到的GOP中各帧数据进行优先级排序时,如果不存在虚拟音频帧,则I帧具有最高优先级,接下来是所有P帧按照解码顺序进行排列,再接下来是按解码顺序紧跟在各P帧之后的第一个B帧按照解码顺序进行排列,之后是按解码顺序紧跟在各P帧之后的第二个B帧按照解码顺序进行排列,并以此类推。
当P2P种子节点调用数据重组模块对接收到的GOP中各帧数据进行优先级排序时,如果存在虚拟音频帧,则该虚拟音频帧具有最高优先级,I帧具有次高优先级,接下来是所有P帧按照解码顺序进行排列,再接下来是按解码顺序紧跟在各P帧之后的第一个B帧按照解码顺序进行排列,之后是按解码顺序紧跟在各P帧之后的第二个B帧按照解码顺序进行排列,并以此类推。
所述频道点播过程的操作步骤如下(1)在P2P节点的媒体缓冲区中创建一个新的频道对象及其GOP缓冲队列,将频道对象中频道创建时间字段的值设为当前系统时间,通过程序参数或与流媒体服务器交互来获得其实时延、频道缓冲区长度、GOP帧数、GOP持续时间和缓冲区持续时间等字段的值以及相关频道描述信息;(2)创建新的GOP对象并加入到上述GOP缓冲队列,将GOP播放时间字段的值设为频道创建时间与起始时延之和,将GOP删除时间字段的值设为频道创建时间与缓冲区持续时间之和,将当前帧数字段的值设为0,通过与其它P2P节点或者P2P种子节点交互来确定GOPSeqNo字段的值;(3)判断GOP缓冲队列是否已满,未满则转至步骤(4),否则转至步骤(5);(4)创建一个新的GOP对象并加入GOP缓冲队列,其中GOP序列号在前一个GOP的基础上加一,GOP播放时间和GOP删除时间字段的值分别在前一个GOP相应字段的基础上递增一个GOP持续时间值,当前帧数字段赋值为0,转至步骤(3);(5)通过调用P2P数据调度算法,并行地从其它一到多个P2P节点或者P2P种子节点中相应频道的GOP缓冲队列的帧缓冲队列中为本地GOP缓冲队列中尚未到达播放时间的一到多个GOP对象选择并接收帧对象数据,然后加入到相应的帧缓冲队列之中;(6)与此同时逐个判断当前时间是否已超过GOP缓冲队列中每个GOP对象的播放时间,如果超过则停止从其它P2P节点或P2P种子节点为该GOP对象接收新的帧对象,然后调用数据还原模块将该GOP对象的帧缓冲队列中缓存的所有帧对象转换为现有技术格式的媒体数据并重新排序后发送至流媒体播放器进行解码播放;(7)判断当前时间是否超过GOP缓冲队列中第一个GOP对象的删除时间,如果超过则将该GOP对象移出队列并删除;转至步骤(3)。
P2P节点在从其它P2P节点或者P2P种子节点处接收帧对象数据时遵循以下原则在接收某个帧对象之前,必须确保所属GOP对象中帧编号小于该帧对象帧编号的所有其它帧对象都已完整接收并加入帧缓冲队列;采用可靠传输协议传输每一帧数据,以确保每一个被选择传送的帧对象数据都能够可靠完整地到达目的地。
P2P节点在将一个帧对象加入到相应的帧缓冲队列之前,必须确保待加入帧对象中帧数据部分是完整的,而且所属GOP对象中帧编号小于该帧对象帧编号的所有其它帧对象都已加入帧缓冲队列。
P2P节点在调用数据还原模块时,按照帧对象中的帧原始编号字段值从小到大的顺序对帧缓冲队列中所有帧对象进行重新排序。
发明由于采取以上技术方案,其具有以下优点1、本发明以GOP为单位来分割和组织流媒体数据,并按照优先级顺序对GOP内部的所有帧进行优先级排序,在网络带宽受限时仅传输优先级较高的帧,从而达到了粗粒度的时域可伸缩效果,能够根据网络状况的动态变化为不同用户提供自适应的服务质量。2、本发明将与一个视频GOP在时间上同步的所有音频数据拼装为该GOP内部的一个虚拟音频帧并赋予最高优先级,从而既能够保证在网络资源受限时音频数据的优先传输,同时又能达到较好的音视频同步效果。3、本发明以单个媒体帧作为最小存储和传输单位,并采用可靠传输协议在一个GOP内部严格按照优先级顺序来传输每一帧,从而可保证每一帧数据要么完整正确传输,要么整体丢弃,而且所有被选择传输的帧必定不依赖于其它在它之前尚未被选择传输的帧,因此不仅不会出现因残缺帧而导致的解码错误或失败,而且还有效地利用了网络带宽资源。4、本发明适用于目前市场上流行的主要音视频编解码标准,例如MPEG系列和AVS等,而且不需要对现有流媒体服务器和播放器系统做任何改动,因而具有很强的适应性,便于开发和大规模推广应用。本发明系统和方法可广泛用于各种基于P2P技术的互联网流媒体传输和应用系统。


图1是本发明提供的QoS自适应的P2P流媒体数据组织与传输系统结构示意2是本发明提供的媒体缓冲区数据结构示意3是本发明提供的GOP内各媒体帧的优先级排序和组织示意4是本发明提供的频道发布操作流程5是本发明提供的频道点播操作流程图具体实施方式
下面结合附图和实施例,对本发明进行详细的描述。
如图1所示,本发明QoS自适应的P2P流媒体数据组织与传输系统由流媒体服务器10、P2P种子节点20、P2P节点30和流媒体播放器40四个部分组成,图中实线箭头代表数据流的方向。
流媒体服务器10与一个或多个P2P种子节点20相连,并向后者提供现有技术格式的流媒体数据源。
P2P流媒体系统中每个可供用户点播的媒体节目都由一个P2P种子节点20以频道的方式发布出去。P2P种子节点20一方面与流媒体服务器10相连,从中接收当前所发布频道的媒体数据;另一方面通过互联网与多个P2P节点30相连,将自己当前所缓存的媒体数据向后者进行转发。此外P2P种子节点20还与流媒体播放器40相连,并将当前缓存的媒体数据发送至后者供其进行播放。P2P种子节点20至少包括数据重组模块21、媒体缓冲区31和数据还原模块32,其中数据重组模块21负责从流媒体服务器10接收当前所发布频道的符合现有技术格式的媒体数据,并将其转换为符合本发明所提供数据结构的媒体数据后缓存于本节点中的媒体缓冲区31;媒体缓冲区31以本发明所提供的媒体数据结构组织并存储接收到的媒体数据;数据还原模块32负责将媒体缓冲区31中所缓存的媒体数据重新还原为符合现有技术的格式后向流媒体播放器40进行发送。
P2P节点30一方面通过互联网与其它的P2P节点30或者P2P种子节点20相连,从中接收符合本发明所提供数据结构的媒体数据然后缓存,并向其它P2P节点30转发缓存的媒体数据;另一方面与流媒体播放器40相连,并将当前缓存的媒体数据发送至流媒体播放器40进行播放。P2P节点30至少包括媒体缓冲区31和数据还原模块32,其中媒体缓冲区31以本发明所提供的媒体数据结构组织并存储接收到的媒体数据;数据还原模块32负责将媒体缓冲区31中所缓存的媒体数据重新还原为符合现有技术的格式后向流媒体播放器40进行发送。
流媒体播放器40与P2P节点30相连,并从中接收符合现有技术格式的媒体数据然后解码播放。
如图2所示,媒体缓冲区31按照以下数据结构来组织和存储媒体数据媒体缓冲区31包含一系列指向频道对象的指针。每个频道对象包含频道头(ChHead)和频道缓冲区(ChBuf)两部分组成,其中频道头中至少包含以下8个字段·ChID(频道标识符)在整个系统中唯一标识某个频道;·StDelay(起始时延)预计从播放器提出播放请求到实际开始播放第一帧媒体数据之间的起始时间延迟;·ChBufLen(缓冲区长度);频道缓冲区中能够缓存的最大GOP(帧组)数;·GOPFrames(GOP帧数)当前频道每一个GOP中应包含的总帧数,其值为P2P种子节点20在发布频道时所确定的GOP帧数,其中包含虚拟音频帧;·GOPDur(GOP持续时间)当前频道中每一个GOP的播放持续时间;·BufDur(缓冲区持续时间)当前频道缓冲区中所有GOP的播放持续时间之和,同时也是每一个GOP在该缓冲区中预计停留的时间间隔,其值应为ChBufLen与GOPDur的乘积;·ChInitTime(频道创建时间)当前频道对象在当前P2P节点30中的创建时间;·ChDesc(频道描述信息)指向一个描述当前频道媒体会话信息的数据块,例如SDP(会话描述协议)信息。
频道缓冲区(ChBuf)指向一个长度固定为ChBufLen的先进先出型的GOP缓冲队列,队列中每个元素又指向一个GOP对象,每个GOP对象包含GOP头(GOPHead)和帧缓冲区(FrameBuf)两部分组成,其中GOP头中至少包含以下4个字段·GOPSeqNo(GOP序列号)P2P种子节点20在发布频道时为每一个GOP赋值一个序列号,连续的GOP其序列号按顺序递增;·GOPPlayTime(GOP播放时间)一旦系统时间超过某个GOP的播放时间,将开始向流媒体播放器转发该GOP中已接收到的媒体帧,而停止从其它P2P节点30为该GOP接收新的媒体帧;创建频道对象时第一个加入到GOP缓冲队列中的GOP对象的GOPPlayTime值设置为ChInitTime与StDelay之和,之后每加入一个GOP对象,其GOPPlayTime值递增GOPDur;·GOPDelTime(GOP删除时间)一旦系统时间超过某个GOP的删除时间,将把该GOP对象从GOP缓冲队列中删除;创建频道对象时第一个加入到GOP缓冲队列中的GOP对象的GOPDelTime设置为ChInitTime与BufDur之和,之后每加入一个GOP对象,其GOPDelTime值递增GOPDur;·CurrFrames(当前帧数)GOP对象中当前实际包含的帧数,其中每一帧数据必须完整;新创建GOP对象时其CurrFrames值为0。
帧缓冲区(FrameBuf)指向一个长度为GOPFrames的帧缓冲队列,队列中每个元素指向一个帧对象,其存储顺序按照帧对象的帧编号(FrameNo)从小到大排列;在将某个帧对象加入到帧缓冲队列时,必须保证帧编号(FrameNo)小于该帧的所有其它帧对象都已经加入,而且当前帧对象中的帧数据部分必须完整,否则将相应的帧对象指针设为空;每加入一个帧对象后,CurrFrames的值加1。
每个帧对象包含帧头(FrameHead)和帧数据(FrameData)两部分组成,其中帧头部分至少包含以下5个字段·FrameNo(帧编号)一个GOP中所有帧的帧编号按优先级顺序从小到大依次递增排列,优先级最高的帧序列号为1,优先级最低的帧序列号为GOPFrames;·FrameOriNo(帧原始编号)GOP中各帧在未进行优先级排序之前的原始编号,按照解码顺序从1开始递增,如果存在虚拟音频帧则假定该虚拟音频帧的解码顺序优先于所有视频帧;·FrameType(帧类型)当前帧的编码类型,例如虚拟音频帧(A帧)、视频帧中的I帧、P帧和B帧等;·TimeStamp(时间戳)当前帧的展示时间戳;·FrameLen(帧长)帧数据部分的长度。
帧数据(FrameData)部分包含组成一帧的完整码流数据。
如果一个节目频道中含有音频,则为了保证音频数据的优先传输并保证音视频数据在传输上的同步,本发明把与一个视频GOP在时间上同步的(即从该GOP中第一个帧开始到最后一个帧结束所对应的时间间隔范围内的)所有音频数据拼装为一个虚拟音频帧(简称A帧),并将其等同于其它视频帧一样来进行存储和传输。在拼装虚拟音频帧时仍保留原先各音频数据块中包括时间戳在内的头信息,拼装后虚拟音频帧的时间戳字段采用所有这些音频数据块中最早的时间戳。
如图3所示,在对一个GOP内所有帧进行优先级排序时,如果不存在A帧则I帧具有最高优先级,接下来是所有P帧按照解码顺序进行排列,再接下来是按解码顺序紧跟在各P帧之后的第一个B帧按照解码顺序进行排列,之后是按解码顺序紧跟在各P帧之后的第二个B帧按照解码顺序进行排列,并以此类推;否则如果存在A帧,则A帧具有最高优先级,然后再按照上述规则排列所有视频帧(I帧、P帧和B帧)。
本发明一种QoS自适应的P2P流媒体数据组织与传输方法,其包括两种不同的操作过程1、频道发布;2、频道点播。
1、频道发布图4所示,当P2P种子节点20需要发布一个频道时,采用频道发布操作过程,其操作步骤如下(1)在P2P种子节点20的媒体缓冲区31中创建一个新的频道对象,通过提取本机当前系统时间来获得ChInitTime字段的值,通过程序参数来获得StDelay和ChBufLen字段的值,通过与流媒体服务器10交互来获得GOPFrames、GOPDur和BufDur等字段的值以及ChDesc字段所指向的频道描述信息,根据ChBufLen的值创建相应长度的先进先出GOP缓冲队列;(2)创建一个新的GOP对象并将其加入上述GOP缓冲队列,该GOP对象中GOPSeqNo字段值为随机生成,GOPPlayTime字段赋值为ChInitTime+StDelay,GOPDelTime字段赋值为ChInitTime+BufDur,CurrFrames字段赋值为0;(3)与流媒体服务器10建立连接并从中接收相应频道一个GOP的媒体数据,如果存在音频,则将该GOP时间间隔内所有音频数据拼装为一个虚拟音频帧(A帧);(4)调用数据重组模块21将上述接收到的GOP中的各帧数据转换为帧对象格式后按照图3所示原则进行优先级排序,并依次加入到当前GOP对象的帧缓冲队列,每加入一个帧对象,相应GOP对象中CurrFrames字段值加一;(5)判断GOP缓冲队列是否已满,未满则转至步骤(6),否则转至步骤(9);(6)创建一个新的GOP对象并将其加入GOP缓冲队列,其中GOPSeqNo、GOPPlayTime和GOPDelTime字段的值分别在前一个GOP对象相应字段值的基础上增加1、GOPDur和GOPDur,CurrFrames字段赋值为0;(7)继续从流媒体服务器10接收相应频道下一个GOP的媒体数据,如果存在音频,则将该GOP时间间隔内所有音频数据拼装为一个虚拟音频帧(A帧);(8)调用数据重组模块21将上述接收到的GOP中的各帧数据转换为帧对象格式后按照图3所示原则进行优先级排序,并依次加入当前GOP对象的帧缓冲队列,每加入一个帧对象,相应GOP对象中CurrFrames字段值加一;(9)判断当前时间是否超过GOP缓冲队列中第一个GOP对象的GOPDelTime字段值,如果超过则将该GOP对象移出队列并删除;转至步骤(5)。
2、频道点播如图5所示,当用户从某个P2P节点30上点播一个频道时,采用频道点播操作过程,其操作步骤如下(1)在P2P节点30的媒体缓冲区31中创建一个新的频道对象,通过提取本机当前系统时间来获得ChInitTime字段的值,通过程序参数来获得StDelay和ChBufLen字段的值,通过其它P2P节点30或者P2P种子节点20交互来获得GOPFrames、GOPDur和BufDur等字段的值以及ChDesc字段所指向的频道描述信息,根据ChBufLen的值创建相应长度的先进先出GOP缓冲队列;(2)创建一个新的GOP对象并加入上述GOP缓冲队列,将该GOP对象中的GOPPlayTime字段赋值为ChInitTime+StDelay,GOPDelTime字段赋值为ChInitTime+BufDur,CurrFrames字段赋值为0,并通过与其它P2P节点30或者P2P种子节点20交互来确定该GOP对象中GOPSeqNo字段的值;(3)判断GOP缓冲队列是否已满,未满则转至步骤(4),否则转至步骤(5);(4)创建一个新的GOP对象并加入GOP缓冲队列,其中GOPSeqNo、GOPPlayTime和GOPDelTime字段的值分别在前一个GOP对象相应字段值的基础上增加1,GOPDur和GOPDur,CurrFrames字段赋值为0,转至步骤(3);(5)通过调用P2P数据调度算法,并行地从其它一到多个P2P节点30或者P2P种子节点20中相应频道的GOP缓冲队列的帧缓冲队列中为本地GOP缓冲队列中GOPPlayTime字段值大于本机当前系统时间的一到多个GOP对象选择并接收帧对象数据,然后加入到相应的帧缓冲队列之中;在接收帧对象数据时遵循以下原则在接收某个帧对象之前,须确保相同GOP对象中帧编号(FrameNo)小于该帧对象帧编号的所有其它帧对象都已完整接收并加入帧缓冲队列;采用可靠传输协议(例如TCP)传输每一帧,以确保每一个被选择传送的帧对象数据都能够可靠完整地到达目的地。
(6)与此同时逐个判断当前系统时间是否超过GOP缓冲队列中各GOP对象的GOPPlayTime字段值,如果超过则停止从其它P2P节点30或P2P种子节点20为该GOP对象接收新的帧对象,然后调用数据还原模块32将该GOP对象的帧缓冲队列中当前缓存的所有帧对象转换为原始数据格式,并重新排序后发送至流媒体播放器40进行解码播放;(7)判断当前时间是否超过GOP缓冲队列中第一个GOP对象的GOPDelTime字段值,如果超过则将该GOP对象移出队列并删除;转至步骤(3)。
权利要求
1.一种QoS自适应的P2P流媒体数据组织与传输系统,其特征在于它包括流媒体服务器、P2P种子节点、P2P节点和流媒体播放器四个部分;所述流媒体服务器与P2P种子节点相连,并向后者提供流媒体数据源;所述P2P种子节点一方面与流媒体服务器相连,从中接收当前所发布频道的媒体数据然后缓存,另一方面通过互联网与多个P2P节点相连,将其当前所缓存的媒体数据向后者转发;另外它还与流媒体播放器相连,并将当前缓存的媒体数据发送至流媒体播放器供其进行播放;所述P2P节点一方面与多个其它的P2P节点或P2P种子节点相连,从中接收媒体数据然后缓存,且向其它P2P节点转发缓存的媒体数据;另一方面与流媒体播放器相连,并将当前缓存的媒体数据发送至流媒体播放器供其进行播放;所述流媒体播放器与P2P节点相连,从中接收媒体数据然后解码播放。
2.如权利要求1所述的QoS自适应的P2P流媒体数据组织与传输系统,其特征在于所述P2P种子节点至少包括数据重组模块、媒体缓冲区和数据还原模块;其中数据重组模块一方面与流媒体服务器相连,另一方面与媒体缓冲区相连;媒体缓冲区一方面与数据重组模块相连,另一方面还与数据还原模块以及其它P2P节点相连;数据还原模块一方面与媒体缓冲区相连,另一方面与流媒体播放器相连。
3.如权利要求1所述的QoS自适应的P2P流媒体数据组织与传输系统,其特征在于所述P2P节点至少包括媒体缓冲区和数据还原模块,其中媒体缓冲区一方面与其它P2P节点或P2P种子节点相连,另一方面与本节点中的数据还原模块相连;数据还原模块一方面与媒体缓冲区相连,另一方面与流媒体播放器相连。
4.如权利要求2或3所述的QoS自适应的P2P流媒体数据组织与传输系统,其特征在于所述媒体缓冲区包含一系列指向频道对象的指针,每个频道对象包含频道头和频道缓冲区两部分,其中频道头至少包含以下8个字段(1)频道标识符ChID在整个系统中唯一标识某个频道;(2)起始时延StDelay从播放器提出播放请求到实际开始播放第一帧媒体数据之间的起始时间延迟;(3)缓冲区长度ChBufLen;频道缓冲区中缓存的最大帧组GOP数;(4)GOP帧数GOPFrames当前频道每一个GOP中应包含的总帧数;(5)GOP持续时间GOPDur当前频道中每一个GOP的播放持续时间;(6)缓冲区持续时间BufDur每个GOP在缓冲区中预计停留的时间,其值为频道缓冲区长度与GOP持续时间的乘积;(7)频道创建时间ChInitTime当前频道对象在当前P2P节点中的创建时间;(8)频道描述信息ChDesc指向一个描述频道媒体会话信息的数据块;频道缓冲区指向一个先进先出形式的GOP缓冲队列,队列中每个元素指向一个GOP对象,每个GOP对象包含GOP头和帧缓冲区两部分,其中GOP头至少包含以下4个字段(1)GOP序列号GOPSeqNo连续的GOP其序列号按顺序递增;(2)GOP播放时间GOPPlayTimeGOP对象的预计播放时间;(3)GOP删除时间GOPDelTimeGOP对象预计离开GOP缓冲队列的时间;(4)当前帧数CurrFramesGOP对象中当前实际包含的帧数,其中每一帧数据必须完整;帧缓冲区指向一个长度为TotalFrames的帧缓冲队列,队列中每个元素指向一个帧对象,其顺序按照帧对象的帧编号从小到大排列,在将某个帧对象加入到帧缓冲队列时,必须保证帧编号小于该帧的所有其它帧对象都已经加入,而且当前帧对象中的帧数据必须完整接收后才能加入,否则相应的帧对象指针设为空;每个帧对象包含固定长度的帧头和帧数据两部分,其中帧头部分至少包含以下5个字段(1)帧编号FrameNo一个GOP中所有帧的帧编号按优先级顺序从小到大依次递增排列,优先级最高的帧序列号为1;(2)帧原始编号FrameOriNoGOP中各帧在未进行优先级排序之前的原始编号,按照解码顺序从1开始递增,如果存在虚拟音频帧则假定该虚拟音频帧的解码顺序优先于所有视频帧;(3)帧类型FrameType;当前帧的编码类型;(4)时间戳TimeStamp当前帧的展示时间戳;(5)帧长FrameLen帧数据部分的长度;帧数据部分包含组成一帧的完整数据。
5.如权利要求2所述的QoS自适应的P2P流媒体数据组织与传输系统,其特征在于所述数据重组模块负责从流媒体服务器接收当前所发布频道的符合现有技术格式的媒体数据,并将其转换和重组为符合所述媒体缓冲区数据结构的数据后提交媒体缓冲区进行缓存。
6.如权利要求2或3所述的QoS自适应的P2P流媒体数据组织与传输系统,其特征在于所述数据还原模块负责将媒体缓冲区中缓存的媒体数据重新还原为符合现有技术格式的媒体数据并向流媒体播放器进行发送。
7.如权利要求4所述的QoS自适应的P2P流媒体数据组织与传输系统,其特征在于所述数据还原模块负责将媒体缓冲区中缓存的媒体数据重新还原为符合现有技术格式的媒体数据并向流媒体播放器进行发送。
8.一种QoS自适应的P2P流媒体数据组织与传输方法,其特征在于包括频道发布和频道点播两种操作过程。
9.如权利要求8所述的一种QoS自适应的P2P流媒体数据组织与传输方法,其特征在于所述频道发布过程的操作步骤如下(1)在P2P种子节点的媒体缓冲区中创建一个新的频道对象及其GOP缓冲队列,将频道对象中频道创建时间字段的值设为当前系统时间,通过程序参数或与流媒体服务器交互来获得其实时延、频道缓冲区长度、GOP帧数、GOP持续时间和缓冲区持续时间等字段的值以及相关频道描述信息;(2)创建新的GOP对象并加入到上述GOP缓冲队列,随机生成一个GOP序列号,将GOP播放时间字段的值设为频道创建时间与起始时延之和,将GOP删除时间字段的值设为频道创建时间与缓冲区持续时间之和,将当前帧数字段的值设为0;(3)与流媒体服务器建立连接并从中接收相应频道一个GOP的媒体数据;(4)调用数据重组模块将上述接收到的GOP中的各帧数据转换为帧对象格式后进行优先级排序,并依次加入到当前GOP对象的帧缓冲队列,每加入一个帧对象,相应GOP对象中当前帧数字段值加一;(5)判断GOP缓冲队列是否已满,未满则转至步骤(6),否则转至步骤(9);(6)创建一个新的GOP对象并加入GOP缓冲队列,其中GOP序列号在前一个GOP的基础上加一,GOP播放时间和GOP删除时间字段的值分别在前一个GOP相应字段的基础上递增一个GOP持续时间值,当前帧数字段赋值为0;(7)继续从流媒体服务器10接收相应频道下一个GOP的媒体数据;(8)调用数据重组模块将上述接收到的GOP中的各帧数据转换为帧对象格式后进行优先级排序,并依次加入当前GOP对象的帧缓冲队列,每加入一个帧对象,相应GOP对象中当前帧数字段值加一;(9)判断当前时间是否超过GOP缓冲队列中第一个GOP对象的GOP删除时间,如果超过则将该GOP对象移出队列并删除;转至步骤(5)。
10.如权利要求9所述的一种QoS自适应的P2P流媒体数据组织与传输方法,其特征在于当P2P种子节点从流媒体服务器中接收到一个GOP的媒体数据时,如果存在音频数据,则将该GOP时间间隔内所有音频数据拼装为一个虚拟音频帧;在拼装虚拟音频帧时仍保留原先各音频数据块中包括时间戳在内的头信息,拼装后虚拟音频帧的时间戳字段采用所有这些音频数据块中最早的时间戳。
11.如权利要求9或10所述的一种QoS自适应的P2P流媒体数据组织与传输方法,其特征在于当P2P种子节点调用数据重组模块对接收到的GOP中各帧数据进行优先级排序时,如果不存在虚拟音频帧,则I帧具有最高优先级,接下来是所有P帧按照解码顺序进行排列,再接下来是按解码顺序紧跟在各P帧之后的第一个B帧按照解码顺序进行排列,之后是按解码顺序紧跟在各P帧之后的第二个B帧按照解码顺序进行排列,并以此类推。
12.如权利要求9或10所述的一种QoS自适应的P2P流媒体数据组织与传输方法,其特征在于当P2P种子节点调用数据重组模块对接收到的GOP中各帧数据进行优先级排序时,如果存在虚拟音频帧,则该虚拟音频帧具有最高优先级,I帧具有次高优先级,接下来是所有P帧按照解码顺序进行排列,再接下来是按解码顺序紧跟在各P帧之后的第一个B帧按照解码顺序进行排列,之后是按解码顺序紧跟在各P帧之后的第二个B帧按照解码顺序进行排列,并以此类推。
13.如权利要求8所述的一种QoS自适应的P2P流媒体数据组织与传输方法,其特征在于所述频道点播过程的操作步骤如下(1)在P2P节点的媒体缓冲区中创建一个新的频道对象及其GOP缓冲队列,将频道对象中频道创建时间字段的值设为当前系统时间,通过程序参数或与流媒体服务器交互来获得其实时延、频道缓冲区长度、GOP帧数、GOP持续时间和缓冲区持续时间等字段的值以及相关频道描述信息;(2)创建新的GOP对象并加入到上述GOP缓冲队列,将GOP播放时间字段的值设为频道创建时间与起始时延之和,将GOP删除时间字段的值设为频道创建时间与缓冲区持续时间之和,将当前帧数字段的值设为0,通过与其它P2P节点或者P2P种子节点交互来确定GOPSeqNo字段的值;(3)判断GOP缓冲队列是否已满,未满则转至步骤(4),否则转至步骤(5);(4)创建一个新的GOP对象并加入GOP缓冲队列,其中GOP序列号在前一个GOP的基础上加一,GOP播放时间和GOP删除时间字段的值分别在前一个GOP相应字段的基础上递增一个GOP持续时间值,当前帧数字段赋值为0,转至步骤(3);(5)通过调用P2P数据调度算法,并行地从其它一到多个P2P节点或者P2P种子节点中相应频道的GOP缓冲队列的帧缓冲队列中为本地GOP缓冲队列中尚未到达播放时间的一到多个GOP对象选择并接收帧对象数据,然后加入到相应的帧缓冲队列之中;(6)与此同时逐个判断当前时间是否已超过GOP缓冲队列中每个GOP对象的播放时间,如果超过则停止从其它P2P节点或P2P种子节点为该GOP对象接收新的帧对象,然后调用数据还原模块将该GOP对象的帧缓冲队列中缓存的所有帧对象转换为现有技术格式的媒体数据并重新排序后发送至流媒体播放器进行解码播放;(7)判断当前时间是否超过GOP缓冲队列中第一个GOP对象的删除时间,如果超过则将该GOP对象移出队列并删除;转至步骤(3)。
14.如权利要求13所述的一种QoS自适应的P2P流媒体数据组织与传输方法,其特征在于P2P节点在从其它P2P节点或者P2P种子节点处接收帧对象数据时遵循以下原则在接收某个帧对象之前,必须确保所属GOP对象中帧编号小于该帧对象帧编号的所有其它帧对象都已完整接收并加入帧缓冲队列;采用可靠传输协议传输每一帧数据,以确保每一个被选择传送的帧对象数据都能够可靠完整地到达目的地。
15.如权利要求13所述的一种QoS自适应的P2P流媒体数据组织与传输方法,其特征在于P2P节点在将一个帧对象加入到相应的帧缓冲队列之前,必须确保待加入帧对象中帧数据部分是完整的,而且所属GOP对象中帧编号小于该帧对象帧编号的所有其它帧对象都已加入帧缓冲队列。
16.如权利要求14所述的一种QoS自适应的P2P流媒体数据组织与传输方法,其特征在于P2P节点在将一个帧对象加入到相应的帧缓冲队列之前,必须确保待加入帧对象中帧数据部分是完整的,而且所属GOP对象中帧编号小于该帧对象帧编号的所有其它帧对象都已加入帧缓冲队列。
17.如权利要求13或14或15或16所述的一种QoS自适应的P2P流媒体数据组织与传输方法,其特征在于P2P节点在调用数据还原模块时,按照帧对象中的帧原始编号字段值从小到大的顺序对帧缓冲队列中所有帧对象进行重新排序。
全文摘要
本发明涉及一种QoS自适应的P2P流媒体数据组织与传输系统,其特征在于它包括流媒体服务器、P2P种子节点、P2P节点和流媒体播放器四个部分;流媒体服务器与P2P种子节点相连,并向后者提供流媒体数据源;P2P种子节点一方面与流媒体服务器相连,从中接收当前所发布频道的媒体数据然后缓存,另一方面通过互联网与多个P2P节点相连,将其当前所缓存的媒体数据向后者转发;另外它还与流媒体播放器相连,并将当前缓存的媒体数据发送至流媒体播放器供其进行播放;P2P节点一方面与多个其它的P2P节点或P2P种子节点相连,从中接收媒体数据然后缓存,且向其它P2P节点转发缓存的媒体数据;另一方面与流媒体播放器相连,并将当前缓存的媒体数据发送至流媒体播放器供其进行播放;流媒体播放器与P2P节点相连,从中接收媒体数据然后解码播放。本发明系统和方法可广泛用于各种基于P2P技术的互联网流媒体传输和应用系统。
文档编号H04L29/06GK101030938SQ20071006358
公开日2007年9月5日 申请日期2007年2月5日 优先权日2007年2月5日
发明者霍龙社, 付强, 高文 申请人:北京大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1