一种网络流媒体数据播放方法和系统的制作方法

文档序号:7954929阅读:362来源:国知局
专利名称:一种网络流媒体数据播放方法和系统的制作方法
技术领域
本发明电通信技术,尤其涉及一种网络流媒体数据播放方法和系统。
背景技术
随着宽带网接入技术的快速发展,流媒体应用越来越受人关注。传统的基于流媒体服务器的内容分发技术遇到了较大的挑战一方面由于流媒体服务器的带宽限制,系统所能支持的同时在线人数有限,扩展性不高,特别是近年来人们对画面的品质要求也提高了,现在一般的网络电视的码流基本上都在400~600Kbps左右;另一方面,流媒体服务器的维护成本较高。基于以上的考虑,基于P2P的内容分发技术开始受到广泛的关注和发展。
在P2P应用领域,主要有三种系统架构集中式,纯分布式和混合式。集中式P2P的典型代表为eMule,BitTorrent,其采用一种Tracker服务器的实体来实现信息的存储和搜索;纯分布式P2P,就是采用DHT技术,将信息分散存储到网络上的各个节点,并采用P2P搜索技术来获取这些信息;混合式P2P的典型代表为Skype,其利用超级节点进行信息存储和搜索。
在现有技术中,实时流媒体内容分发主要采用应用层组播树(ALM)传播,应用层组播的典型代表为基于单树的ZIGZAG模型(Duc A.Tran,KienA.Hua,TaiDo,″ZIGZAGAn Efficient Peer-to-Peer Scheme for Media Streaming″,IEEE2003)和基于多树的SplitStream模型(M.Castro,P.Druschel,A.-M.Kermarrec,A.Nandi,A.Rowstron and A.Singh,″SplitStreamHigh-Bandwidth Multicast in Cooperative Environments″,in ACM SOSP,Bolton Landing,NY,USA,October 19-22,2003),组播树通过在全局维护一个以媒体源为根节点的分发树结构,数据分发采用类似网络层组播技术,从上向下,逐层分发,作为叶子节点的用户终端只能被动地接受来自上层节点的数据,根节点的数据量很大,形成了数据传输瓶颈,这种技术方案对于网络动态拓扑变化的适应性较差,不能充分利用系统现有的网络资源,效率低。

发明内容
本发明的目的在于提供一种高效率的网络流媒体数据播放方法和系统,以解决现有技术中对于网络动态拓扑变化的适应性较差,效率低的问题。
本发明中的网络流媒体数据播放方法采用如下步骤A、客户端获取频道信息;B、根据频道信息选择频道,取得相应频道活动节点列表;C、客户端根据该活动节点列表获取新的伙伴节点信息,通过频道服务器在客户端与伙伴节点之间实现流媒体数据分发,客户端进行相应播放。
所述的步骤A包括如下步骤A1、客户端启动后连接STUN服务器,完成客户端NAT类型和外部IP地址信息的测试;A2、客户端连接频道发布Web服务器,由频道发布Web服务器下载频道信息文件,显示频道列表。
所述的步骤B包括如下步骤B1、由频道列表选取所需频道,并向相关频道服务器发送NAT类型和外部IP地址信息;B2、客户端登陆所述频道服务器,频道服务器根据所选频道,依据客户端IP地址地域性和NAT可穿越性向客户端返回最佳的频道活动节点列表。
所述的频道服务器还向客户端返回流媒体数据同步信息和流媒体头信息。
所述的步骤C中,所述的客户端通过“心跳包”机制与频道服务器保持连接。
所述的步骤A之前还包括如下步骤媒体源连接到频道服务器,添加一个新的频道,频道服务器保存该媒体源的频道,频道服务器对频道信息文件进行相应更新。
所述的媒体源向频道服务器发送流媒体数据同步信息。
所述的步骤C包括如下步骤C1、客户端节点向活动节点请求所需数据片;C2、客户端采用Membe/Partner机制来管理节点,节点与伙伴节点通过Gossip协议不断地发现新节点,添加作为自己的Member节点,对所有的活动节点进行更新;C3、客户端与伙伴节点之间通过频道服务器建立数据通道,完成流媒体数据分发,客户端对收到的流媒体数据进行相应播放。
所述的步骤C1中,客户端将数据片请求随机地发送到持有该数据片的各个伙伴节点或活动节点,以保持节点的负载平衡。
所述的步骤C2中,客户端节点通过周期性地向伙伴节点发送Gossip包,根据本地的播放进度和数据片的有效性,发出相关数据片的获取请求,以及本地节点所能够提供的数据片信息。
所述的步骤C2中,客户端根据对伙伴节点的质量和流量评估,周期性地淘汰20%的伙伴节点,并选取等量的闲置Member节点进行替换。
所述的步骤C3中,客户端之间采用频道服务器转发NAT穿透相关信令进行NAT/Firewall穿透,客户端之间采用UDP协议连接数据通道。
这种网络流媒体数据播放系统,包括媒体源和客户端,所述的媒体源保存有流媒体数据,其特征在于还包括频道服务器和频道发布Web服务器,其中,所述的频道服务器保存媒体源的频道,对频道发布Web服务器中的频道信息文件进行更新;所述的频道发布Web服务器接收频道服务器发送的频道,保存频道信息文件;所述的客户端根据频道发布Web服务器中的频道信息文件选取频道,频道服务器根据所选频道向客户端发送相应频道活动节点列表,客户端根据活动节点列表获取新的伙伴节点信息,通过频道服务器在客户端的伙伴节点之间实现流媒体数据分发,客户端对流媒体数据进行播放。
所述的客户端采用Membe/Partner机制来管理节点,节点通过与伙伴节点的Gossip机制不断的发现新节点,添加并作为自己的Member节点,对所有的活动节点进行更新。
所述客户端中设置缓冲管理器,所述的缓冲管理器采用环形结构,同时应用带引用计数的数据块缓冲池,根据播放的进度来控制本地的数据存储,该缓冲管理器设置了两个游标,一个用于指示当前播放的进度,另一个用于指示本地缓冲的起始数据片ID号,数据采用推模式添加到缓冲管理器;播放时从缓冲管理器中获取数据片,并推给流媒体的过滤器进行渲染和播放。
所述系统还包括STUN服务器,所述的STUN服务器通过与客户端信息交互,完成客户端NAT类型和外部IP地址信息的测试,由客户端保存所述NAT和IP信息并根据需要向频道服务器发送所述信息。
所述的采用STUN服务器采用STUN协议(RFC 3489)与客户端进行信息交互。
所述系统中包括多个频道服务器,所述频道服务器之间采用级联,所述频道服务器完成客户端之间、以及客户端与不同频道服务器之间的信息中转,所述的中转信息包括活动节点列表、NAT穿透信令。
本发明的有益效果为在本发明中,客户端获取频道信息,根据频道信息选择频道,取得相应频道活动节点列表,客户端根据该活动节点列表获取新的伙伴节点信息,通过频道服务器在客户端的伙伴节点之间实现流媒体数据分发,客户端进行相应播放,具体地说,客户端采用Membe/Partner机制来管理节点,节点与伙伴节点通过Gossip协议不断地发现新节点,添加作为自己的Member节点,即对所有的活动节点进行更新。这样,在本发明中,数据分发采用Gossip算法,节点随机地给系统中的部分(活动)节点发送消息,每个接收到消息的(活动)节点继续向其它节点发送消息,重复这个过程,直到消息被发送给系统中的所有节点,在流媒体数据传输过程中,音视频/流媒体数据被分割成一个个小的片断,用一个缓存映射BMap(buffer map)来表示节点中是否拥有某个片断的数据,节点和伙伴节点之间通过Gossip算法不断交换BMap来了解相互间的缓存情况,换句话说,在数据传输过程中,节点(对应的客户端)之间就相互成为相对的数据发送端或接收端,从而大大降低了系统主服务器(如频道服务器、媒体源)的负荷,充分利用了系统现有的网络资源,提高了系统工作效率。
在本发明中,采用STUN服务器采用STUN协议(RFC 3489)与客户端进行信息交互,完成客户端NAT类型和外部IP地址信息的测试,可进一步提高系统网络的透明性,为最大限度利用系统现有网络资源提供了有效的途径,进一步提高了本发明的实用性和可操作性。
在本发明中,客户端根据对伙伴节点的质量和流量评估,如每个节点通过维护一个本地节点视图,可实现动态地调整这些伙伴节点,使系统传输通道优化,进一步提高了本发明的实用性。


图1为本发明实施例1系统结构示意图;图2为本发明基本控制流程示意图;图3为本发明实施例1控制流程示意图;图4为本发明实施例2系统结构示意图。
具体实施例方式
下面根据附图和实施例对本发明作进一步详细说明实施例1根据图1,本发明包括媒体源1、客户端2、频道服务器3、频道发布Web服务器4和STUN服务器5。
如图1所示,媒体源1保存有流媒体数据,媒体源1连接到频道服务器3,添加一个新的频道,频道服务器3保存该媒体源1的频道。
如图1所示,所述的频道服务器3保存媒体源1的频道,对频道发布Web服务器4中的频道信息文件进行更新;频道发布Web服务器4接收频道服务器3发送的频道,保存频道信息文件,频道信息文件中包含有频道信息和相关信息。
如图1所示,客户端2与频道服务器3相联,在该图1中,为清楚地显示有关连接关系,只显示了一个客户端2,而在实际应用中,可能会有若干个客户端2与频道服务器3相联,客户端2根据频道发布Web服务器4中的频道信息文件选取频道,频道服务器3根据所选频道向客户端2发送相应频道活动节点列表,客户端2根据活动节点列表获取新的伙伴节点信息,通过频道服务器3在客户端2的伙伴节点之间实现流媒体数据分发,客户端2对流媒体数据进行播放,具体地,客户端2采用Membe/Partner机制来管理节点,节点与伙伴节点通过Gossip协议不断地发现新节点,添加作为自己的Member节点,对所有的活动节点进行更新。
客户端2中设置缓冲管理器,缓冲管理器采用环形结构,同时应用带引用计数的数据块缓冲池,根据播放的进度来控制本地的数据存储,该缓冲管理器设置了两个游标,一个用于指示当前播放的进度,另一个用于指示本地缓冲的起始数据片ID号,数据采用推模式添加到缓冲管理器;播放时从缓冲管理器中获取数据片,并推给流媒体的过滤器进行渲染和播放。
如图1所示,STUN服务器5采用STUN协议(RFC 3489)与客户端2信息交互,完成客户端2NAT类型和外部IP地址信息的测试,由客户端2保存所述NAT和IP信息并根据需要向频道服务器3发送所述信息。
如图1和图2所示,本发明的基本控制流程如下1)客户端2由频道发布Web服务器4中的频道信息文件获取频道信息。
2)客户端2根据频道信息文件的内容选择频道,频道服务器3根据所选频道向客户端2发送相应频道活动节点列表。
3)客户端2节点向其中的活动节点请求所需数据片。
4)客户端2采用Membe/Partner机制来管理节点,节点与伙伴节点通过Gossip协议不断地发现新节点,添加作为自己的Member节点,对所有的活动节点进行更新。
5)客户端2与伙伴节点之间通过频道服务器3建立数据通道,完成流媒体数据分发,客户端2对收到的流媒体数据进行相应播放。
如图1和图3所示,下面就本发明的具体控制流程说明如下1.媒体源1连接到频道服务器3,添加一个新的频道。
2.频道服务器3保存该媒体源1的频道以及该频道中流媒体数据同步信息,频道服务器3对频道发布Web服务器4中的频道信息文件进行相应更新。
3.客户端2启动后连接STUN服务器5,STUN服务器5采用STUN协议(RFC 3489)与客户端2信息交互,完成客户端2NAT类型和外部IP地址信息的测试,客户端2保存该NAT和IP地址信息。
4.客户端2连接频道发布Web服务器4,由频道发布Web服务器4下载频道信息文件,在客户端2显示频道列表。
5.用户从频道列表中选取所需频道,并向频道服务器3发送NAT类型和外部IP地址信息,从用户的层面上来说,这种选取可直观地体现为点击一项与频道服务器3的链接。
6.客户端2登陆该频道服务器3,频道服务器3根据所选频道,依据客户端IP地址地域性和NAT可穿越性向客户端2返回最佳的频道活动节点列表、流媒体数据同步信息和流媒体头信息。
7.客户端2节点向其中的活动节点请求所需数据片,客户端2将数据片请求随机地发送到持有该数据片的各个伙伴节点或活动节点,以保持节点的负载平衡。
8.客户端2采用Membe/Partner机制来管理节点,节点与伙伴节点通过Gossip协议不断地发现新节点,添加作为自己的Member节点,对所有的活动节点进行更新,在这种更新过程中,客户端2节点通过周期性地向伙伴节点发送Gossip包,根据本地的播放进度和数据片的有效性,发出相关数据片的获取请求,以及本地节点所能够提供的数据片信息,客户端2根据对伙伴节点的质量和流量评估,周期性地淘汰20%的伙伴节点,并选取等量的闲置Member节点进行替换。
为了减小向单一伙伴节点过量请求数据片而导致数据冗余和播放延迟,在本发明中,为每个伙伴节点设置了滑动窗口机制,在数据片调度时参考当前伙伴节点的滑动窗口大小,以决定向该节点请求相应的数据片是否容许。
各节点在收到伙伴节点的Gossip数据包后,保存伙伴节点的缓冲区数据片位图信息BMap,同时,节点周期性地比较本地缓冲区数据片位图和伙伴节点的BMap,执行数据片调度算法向伙伴节点请求新的数据片。
9.客户端2与伙伴节点之间通过频道服务器3建立数据通道,客户端2之间采用频道服务器3转发NAT穿透相关信令进行NAT/Firewall穿透,在流媒体数据的传输中,客户端2之间采用UDP协议连接数据通道,从而完成流媒体数据分发,客户端2对收到的流媒体数据进行相应播放。客户端2通过“心跳包”机制与频道服务器3保持连接,即按设定的时间周期,客户端2与频道服务器3之间进行呼叫、应答联络,以确定客户端2相对于频道服务器3处于在线状态,且频道服务器3定时获取客户端2的有关状态信息。
在本发明中,为了减少数据片在处理过程中的数据拷贝,节点采用了带引用计数的内存缓冲池技术,采用环形结构的缓冲管理器,同时应用带引用计数的数据块缓冲池,根据播放的进度来控制本地的数据存储,该缓冲管理器设置了两个游标,一个用于指示当前播放的进度,另一个用于指示本地缓冲的起始数据片ID号,数据采用推模式添加到缓冲管理器,当从伙伴节点获取到数据片时,位于客户端2的流媒体播放器,通过一个独立的线程不断地从客户端2中的Buffer管理器中拉数据,播放时从缓冲管理器中获取数据片,并推给流媒体的过滤器进行渲染和播放。
这样,本发明在数据传输过程中,节点(或对应的客户端)之间就相互成为相对的数据发送端或接收端,从而大大降低了系统主服务器(如频道服务器、媒体源)的负荷,充分利用了系统现有的网络资源,提高了系统工作效率。
实施例2如图4所示,本实施例与实施例1的区别在于在本实施例中,本发明包括多个频道服务器3A、3B、…、3X,频道服务器3A、3B、…、3X之间采用级联,多个客户端2A、…、2Y分别与频道服务器3A、3B、…、3X相联,频道服务器3A、3B、…、3X完成客户端2A、…、2Y之间、以及客户端2A、…、2Y与不同频道服务器3A、3B、…、3X之间的信息中转,所述的中转信息包括活动节点列表、NAT穿透信令等,至于其它结构与控制流程,与实施例1所述相同或相似,此处不再赘述。
权利要求
1.一种网络流媒体数据播放方法,其特征在于它采用如下步骤A、客户端获取频道信息;B、根据频道信息选择频道,取得相应频道活动节点列表;C、客户端根据该活动节点列表获取新的伙伴节点信息,通过频道服务器在客户端与伙伴节点之间实现流媒体数据分发,客户端进行相应播放。
2.根据权利要求1所述的网络流媒体数据播放方法,其特征在于所述的步骤A包括如下步骤A1、客户端启动后连接STUN服务器,完成客户端NAT类型和外部IP地址信息的测试;A2、客户端连接频道发布Web服务器,由频道发布Web服务器下载频道信息文件,显示频道列表。
3.根据权利要求2所述的网络流媒体数据播放方法,其特征在于所述的步骤B包括如下步骤B1、由频道列表选取所需频道,并向相关频道服务器发送NAT类型和外部IP地址信息;B2、客户端登陆所述频道服务器,频道服务器根据所选频道,依据客户端IP地址地域性和NAT可穿越性向客户端返回最佳的频道活动节点列表。
4.根据权利要求3所述的网络流媒体数据播放方法,其特征在于所述的频道服务器还向客户端返回流媒体数据同步信息和流媒体头信息。
5.根据权利要求1所述的网络流媒体数据播放方法,其特征在于所述的步骤C中,所述的客户端通过“心跳包”机制与频道服务器保持连接。
6.根据权利要求2-5中任意一项所述的网络流媒体数据播放方法,其特征在于所述的步骤A之前还包括如下步骤媒体源连接到频道服务器,添加一个新的频道,频道服务器保存该媒体源的频道,频道服务器对频道信息文件进行相应更新。
7.根据权利要求6所述的网络流媒体数据播放方法,其特征在于所述的媒体源向频道服务器发送流媒体数据同步信息。
8.根据权利要求2-5中任意一项所述的网络流媒体数据播放方法,其特征在于所述的步骤C包括如下步骤C1、客户端节点向活动节点请求所需数据片;C2、客户端采用Membe/Partner机制来管理节点,节点与伙伴节点通过Gossip协议不断地发现新节点,添加作为自己的Member节点,对所有的活动节点进行更新;C3、客户端与伙伴节点之间通过频道服务器建立数据通道,完成流媒体数据分发,客户端对收到的流媒体数据进行相应播放。
9.根据权利要求8所述的网络流媒体数据播放方法,其特征在于所述的步骤C1中,客户端将数据片请求随机地发送到持有该数据片的各个伙伴节点或活动节点,以保持节点的负载平衡。
10.根据权利要求8所述的网络流媒体数据播放方法,其特征在于所述的步骤C2中,客户端节点通过周期性地向伙伴节点发送Gossip包,根据本地的播放进度和数据片的有效性,发出相关数据片的获取请求,以及本地节点所能够提供的数据片信息。
11.根据权利要求8所述的网络流媒体数据播放方法,其特征在于所述的步骤C2中,客户端根据对伙伴节点的质量和流量评估,周期性地淘汰20%的伙伴节点,并选取等量的闲置Member节点进行替换。
12.根据权利要求8所述的网络流媒体数据播放方法,其特征在于所述的步骤C3中,客户端之间采用频道服务器转发NAT穿透相关信令进行NAT/Firewall穿透,客户端之间采用UDP协议连接数据通道。
13.一种网络流媒体数据播放系统,包括媒体源和客户端,所述的媒体源保存有流媒体数据,其特征在于还包括频道服务器和频道发布Web服务器,其中,所述的频道服务器保存媒体源的频道,对频道发布Web服务器中的频道信息文件进行更新;所述的频道发布Web服务器接收频道服务器发送的频道,保存频道信息文件;所述的客户端根据频道发布Web服务器中的频道信息文件选取频道,频道服务器根据所选频道向客户端发送相应频道活动节点列表,客户端根据活动节点列表获取新的伙伴节点信息,通过频道服务器在客户端的伙伴节点之间实现流媒体数据分发,客户端对流媒体数据进行播放。
14.根据权利要求13所述的网络流媒体数据播放系统,其特征在于所述的客户端采用Membe/Partner机制来管理节点,节点与伙伴节点通过Gossip协议不断地发现新节点,添加作为自己的Member节点,对所有的活动节点进行更新。
15.根据权利要求13-14中任意一项所述的网络流媒体数据播放系统,其特征在于所述客户端中设置缓冲管理器,所述的缓冲管理器采用环形结构,同时应用带引用计数的数据块缓冲池,根据播放的进度来控制本地的数据存储,该缓冲管理器设置了两个游标,一个用于指示当前播放的进度,另一个用于指示本地缓冲的起始数据片ID号,数据采用推模式添加到缓冲管理器;播放时从缓冲管理器中获取数据片,并推给流媒体的过滤器进行渲染和播放。
16.根据权利要求13-14中任意一项所述的网络流媒体数据播放系统,其特征在于所述系统还包括STUN服务器,所述的STUN服务器通过与客户端信息交互,完成客户端NAT类型和外部IP地址信息的测试,由客户端保存所述NAT和IP信息并根据需要向频道服务器发送所述信息。
17.根据权利要求16所述的网络流媒体数据播放系统,其特征在于所述的采用STUN服务器采用STUN协议(RFC 3489)与客户端进行信息交互。
18.根据权利要求13-14中任意一项所述的网络流媒体数据播放系统,其特征在于所述系统中包括多个频道服务器,所述频道服务器之间采用级联,所述频道服务器完成客户端之间、以及客户端与不同频道服务器之间的信息中转,所述的中转信息包括活动节点列表、NAT穿透信令。
全文摘要
一种涉及电通信技术的网络流媒体数据播放方法和系统,该方法包括A.客户端获取频道信息,B.根据频道信息选择频道,取得相应频道活动节点列表,C.根据该活动节点列表获取新的伙伴节点信息,通过频道服务器在客户端与伙伴节点之间实现流媒体数据分发;该系统包括媒体源和客户端,其特征在于频道服务器保存对频道发布Web服务器中的频道信息文件进行更新;频道发布Web服务器接收频道服务器发送的频道,保存频道信息文件;客户端根据频道信息文件选取频道,频道服务器向客户端发送相应频道活动节点列表,客户端根据活动节点列表获取新的伙伴节点信息,实现流媒体数据分发,对流媒体数据进行播放,本发明效率高。
文档编号H04N7/173GK101047696SQ200610034740
公开日2007年10月3日 申请日期2006年3月27日 优先权日2006年3月27日
发明者朱建平, 王素云 申请人:互联天下科技发展(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1