一种具有较小启动时延的P2P分布式流媒体直播方法转让专利

申请号 : CN201010224735.4

文献号 : CN101895576B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈惠芳谢磊陈高翔沈佳峰宋革联王茂华孙小华赵帆程陈炜

申请人 : 浙江省公众信息产业有限公司浙江大学

摘要 :

本发明涉及一种具有较小启动时延的P2P分布式流媒体直播方法。现有方法在开始时需要较长的等待时间。本发明方法首先由客户节点通过认证方式加入P2P流媒体网络,并获取初始服务信息;然后客户节点获取流媒体数据,具体方法是客户节点向超级节点请求启动数据,并根据本地节点选择策略选择出推送节点、好友节点和备用节点;然后向推送节点、好友节点和备用节点发起连接并请求基本流的数据。若客户节点的下载带宽大于基本流和增强流的叠加码率,且本地基本流缓冲区已存满基本流数据时,则向推送节点和好友节点请求增强流的数据。本发明采用MDC方案解决媒体数据流的编码问题,通过从超级节点处快速获取启动数据的方式降低启动时延。

权利要求 :

1.一种具有较小启动时延的P2P分布式流媒体直播方法,其特征在于该方法包括以下步骤:步骤(1)客户节点加入P2P流媒体网络并获取初始服务信息,具体方法为:

a.客户节点通过因特网连接到认证服务器请求登录认证;

b.若客户节点没有合法的账号,则需要向认证服务器提交用户名和密码进行注册;若客户节点为已注册用户,则输入用户名和密码进行认证;客户节点通过认证后,认证服务器为其分配一个唯一的用户标识NID,将客户节点重定向到Web应用服务器;

c.Web应用服务器向客户节点返回最新的频道列表和跟踪服务器地址,所述的频道列表是指当前P2P流媒体网络提供的所有频道信息,频道信息包括各个频道的频道名称、频道标识符、频道基本流和增强流的码率、频道的在线节点数量以及频道的简单介绍和截图;

d.客户节点通过点击感兴趣的频道,向跟踪服务器发送加入到该频道的加入消息,所述的加入消息包括客户节点点击的频道的标识符CID以及客户节点自身的节点信息;

e.跟踪服务器收到客户节点的加入消息后,返回该频道的频道初始化信息、超级节点信息和邻居节点列表,所述的频道初始化信息表示该频道当前的播放时刻对应的起始数据块序号,该起始数据块序号由源服务器定期发送至跟踪服务器;

所述的超级节点信息是指缓存有该频道的媒体流数据的超级节点的IP地址和端口号;

所述的邻居节点列表表示与客户节点观看相同频道的部分在线节点的节点信息列表,节点信息包括节点的NID、IP地址、端口、上传带宽和下载带宽;

步骤(2)客户节点获取流媒体数据,具体方法为:

f.客户节点根据收到的频道初始化信息向超级节点请求启动数据,所述的启动数据是指客户节点从超级节点获取的能持续播放T秒的基本流数据,其中,T的取值为30~60;

g.客户节点获取超级节点提供的启动数据并根据本地节点选择策略选择出推送节点、好友节点和备用节点,然后客户节点向推送节点、好友节点和备用节点发起连接并请求基本流的数据;

h.若客户节点的下载带宽大于基本流和增强流的叠加码率,且本地基本流缓冲区已存满基本流数据时,则向推送节点和好友节点请求增强流的数据,所述的叠加码率是指基本流和增强流的码率之和。

2.根据权利要求1所述的P2P分布式流媒体直播方法,其特征在于:所述的本地节点选择策略具体是指客户节点与邻居节点列表中的节点交换缓冲区映射信息,并根据收到的缓冲区映射信息选择出推送节点、好友节点和备用节点;

所述的推送节点PP是指直接推送数据块给客户节点的节点,推送节点选取方法为:

①.客户节点根据收到的缓冲区映射信息选出起始数据块序号大于客户节点起始数据块序号的节点;

②.客户节点从选出的节点中随机选择一个节点PP1请求数据流推送;

③.若节点PP1的上传带宽大于或等于基本流码率,则节点PP1推送数据流给客户节点,若节点PP1的上传带宽小于基本流码率,则节点PP1不予响应;

④.若客户节点在tw的时间内未收到节点PP1推送的数据流,则返回步骤②重新选择节点,其中tw为节点设置的从发出消息到接受对方回复消息的最长等待时间,tw根据网络状况确定;

所述的好友节点FP是指与客户节点定期交换缓冲区映射信息和数据的节点,好友节点的选取方法为:⑤.客户节点向除推送节点外的节点广播联合消息,联合消息的内容是客户节点请求与节点FP1成为好友节点,互相交换缓冲区映射信息和数据,所述的节点FP1为客户节点的邻居节点中除推送节点外的某个节点;

⑥.节点FP1收到客户节点的联合消息后,若节点FP1上传带宽支持与客户节点进行缓冲区映射信息交换并向客户节点提供数据块,则将客户节点作为自己的好友节点,并直接发送确认消息给客户节点,表明节点FP1与客户节点成为好友节点,若节点FP1上传带宽不支持与客户节点进行缓冲区映射信息交换并向客户节点提供数据块,则节点FP1不予响应;

⑦.客户节点在收到节点FP1的确认消息后,向节点FP1发送回复消息,表明客户节点确认与节点FP1成为好友节点,客户节点与节点FP1开始交换缓冲区映射信息来获取对方数据;若节点FP1发送确认消息后在tw的时间内未收到回复消息,从好友节点中删除客户节点;

⑧.若客户节点在2tw的时间内未收到K个节点的确认消息,则向已确认的某个好友节点FP1请求其邻居节点列表并向节点FP1的邻居节点广播联合消息;所述的K表示客户节点所维护的好友节点的个数,K的取值由客户节点根据自身的下载带宽确定;

节点通过步骤⑥到步骤⑧的过程确认的好友节点数量达到K时,对其它节点发送确认消息不予响应;

所述的备用节点BP是指客户节点的邻居节点列表中除推送节点和好友节点外剩余的节点,客户节点既不与备用节点交换缓冲区映射信息,也不向其进行数据请求,只确定备用节点是否在线,备用节点的选取方法为:i、客户节点将除推送节点和好友节点外的所有剩余节点作为备用节点,并向备用节点广播带有客户节点信息的心跳消息;

ii、节点BP1收到携有客户节点信息的心跳消息后确认自己的邻居节点个数,若节点BP1的邻居节点个数小于(M+10),则将客户节点加入到备用节点列表中,并回复携有节点BP1信息的心跳消息;若节点BP1的邻居节点个数大于或等于(M+10),则对客户节点发送的心跳消息不予响应;M的取值由P2P网络状况确定,若当前在线节点具有较大的上传带宽,则M取25;若在线节点上传带宽较小,则M取35;所述的节点BP1为客户节点的邻居节点中除推送节点和好友节点外的某个节点;

iii、客户节点在tw的时间内未收到节点BP1的心跳消息,则从备用节点中删除节点BP1。

说明书 :

一种具有较小启动时延的P2P分布式流媒体直播方法

技术领域

[0001] 本发明属于P2P技术与流媒体直播领域,具体涉及一种具有较小启动时延的P2P分布式流媒体直播方法。

背景技术

[0002] 流媒体技术是指在互联网上实时顺序地传输和播放视频、音频等多媒体内容的连续时间数据流,包括流媒体数据采集、音视频编解码、存储、传输、播放等技术。P2P流媒体技术是相对于传统的C/S(客户端/服务器,Client/Sever)模式而言的,是指在互联网上用P2P的方式进行流媒体数据传输并在终端上播放的技术。这种方法有两方面优点:一是P2P技术不需要特定的网络设备支持,可以在原有的网络设备基础上进行扩展,因此性价比高且易于部署;二是流媒体用户不只是下载媒体数据,同时把媒体数据上载给其他用户,较易扩大用户规模。
[0003] 流媒体数据流与普通多媒体文件的压缩和编码不同,其需要在网络上实时传输,传输中的数据丢失对解码质量有较大影响。在当前网络环境下,MDC(多描述编码,Multiple Description Coding)方案是一种兼顾数据传输实时性要求,同时解决数据失真问题的编码方法。MDC把原始的视频序列压缩成多条流,每条流都提供可以接受的视觉质量,多条流结合起来提供更好的质量。
[0004] P2P流媒体数据分发模式分为推模式和拉模式。推模式一般采用树状拓扑,数据由父节点主动推送给子节点,节点在收到数据后立即转发,因此节点间的传输延迟较少。由于树状拓扑是一个单点下载模型,节点的出度和树的高度均受限制,能力较弱的节点可能成为其子树的瓶颈,且叶子节点只下载数据而不提供数据。在树状拓扑中,父节点退出后,子节点要从源节点或别的父节点处重新加入,子节点会丢失部分数据。拉模式一般用于网状拓扑中,节点与邻居节点之间互相交换BM(Buffer Map,缓冲区映射)信息,若节点缺少某些数据块,则向拥有这些数据块的邻居节点发送请求并下载,即使少量邻居节点退出网络,节点还可以从其他邻居节点处下载数据,具有较强的鲁棒性。但从节点获取数据的方式可以看出,一个数据块从请求到接收,需要经过请求方和发送方的BM信息交换、请求方请求数据块、发送方发送数据块三个步骤,因此延时和开销比较大。拉模式中数据调度是周期性进行的,周期过小会导致BM信息和数据块请求信息带来额外的开销,会加重网络负载;周期过大则会使节点长时间处于被动的等待状态中。
[0005] 现行的P2P流媒体直播系统在启动播放时,本地缓冲区均要缓冲一段较长的流媒体数据才会开始播放,因此用户在加入P2P网络启动播放到流媒体开始播放需要等待较长的时间。现行的P2P流媒体直播系统对所有节点都采用统一的播放策略,部分节点的下载带宽不够大,会出现流媒体数据获取不足导致播放画面停顿的问题,无法保证QoS,用户体验也不够好。

发明内容

[0006] 本发明的目的是为了减小P2P流媒体节点在启动流媒体播放后的启动等待时间,并保证节点获得流畅的播放体验。
[0007] 在本发明中,采用非平衡的多描述编码方式,将媒体数据编码成两条数据流,其中一条流是码率较低的基本层数据流,另一条流是码率较高的增强层数据流,如图1所示,基本层数据流和增强层数据流简称为基本流和增强流。基本流可以独立解码,输出音频序列及质量较低的视频序列,增强流不能独立解码,它起增强视频质量的作用,基本流与增强流结合解码后可还原出原始的视频序列。
[0008] 为了实现上述目的,本发明所涉及的一种面向电信级运营的宽带城域网的P2P流媒体直播网络由服务器组和节点组共同构成。其中,服务器组包括认证服务器、Web应用服务器、跟踪服务器和源服务器;节点组包括超级节点组和普通节点组。本发明解决技术问题所采取的方法为:
[0009] 步骤(1)客户节点加入P2P流媒体网络并获取初始服务信息,所述的客户节点为普通节点组中的任一一个节点,具体方法为:
[0010] a.客户节点通过因特网连接到认证服务器请求登录认证;
[0011] b.若客户节点没有合法的账号,则需要向认证服务器提交用户名和密码进行注册;若客户节点为已注册用户,则输入用户名和密码进行认证。客户节点通过认证后,认证服务器为其分配一个唯一的用户标识NID,将客户节点重定向到Web应用服务器。
[0012] c.Web应用服务器向客户节点返回最新的频道列表和跟踪服务器地址;所述的频道列表是指当前P2P流媒体网络提供的所有频道信息,频道信息包括各个频道的频道名称、频道标识符(用CID表示)、频道基本流和增强流的码率、频道的在线节点数量以及频道的简单介绍和截图。
[0013] d.客户节点通过点击感兴趣的频道,向跟踪服务器发送加入到该频道的加入消息。
[0014] 所述的加入消息是客户节点点击的频道的标识符CID以及客户节点自身的节点信息。
[0015] e.跟踪服务器收到客户节点的加入消息后,返回该频道的频道初始化信息、超级节点信息和邻居节点列表。
[0016] 所述的频道初始化信息表示该频道当前的播放时刻对应的起始数据块序号,该起始数据块序号由源服务器定期发送至跟踪服务器,所述的超级节点信息是指缓存有该频道的媒体流数据的超级节点的IP地址和端口号。所述的邻居节点列表表示与客户节点观看相同频道的部分在线节点的节点信息列表,节点信息包括节点的NID、IP地址、端口、上传带宽和下载带宽。
[0017] 步骤(2)客户节点获取流媒体数据,具体方法为:
[0018] f.客户节点根据收到的频道初始化信息向超级节点请求启动数据。所述的启动数据是指客户节点从超级节点获取能持续播放T秒的基本流数据。T的取值为30~60。
[0019] g.客户节点获取超级节点提供的启动数据并根据本地节点选择策略选择出推送节点、好友节点和备用节点,然后客户节点向推送节点、好友节点和备用节点发起连接并请求基本流的数据。
[0020] 所述的本地节点选择策略具体是指客户节点与邻居节点列表中的节点交换缓冲区映射(BM)信息,并根据收到的BM信息选择出推送节点、好友节点和备用节点。
[0021] 推送节点PP(Push Peer,推送节点)是指直接推送数据块给客户节点的节点。推送节点选取过程具体是:
[0022] 1)、客户节点根据收到的BM信息选出起始数据块序号大于客户节点的节点。
[0023] 2)、客户节点从选出的节点中随机选择一个节点PP1请求数据流推送。
[0024] 3)、若节点PP1的上传带宽大于等于基本流码率,则节点PP1推送数据流给客户节点,若节点PP1的上传带宽小于基本流码率,则节点PP1不予响应。
[0025] 4)、若客户节点在tw的时间内未收到节点PP1推送的数据流,则返回步骤2)重新选择节点。tw为节点设置的从发出消息到接受对方回复消息的最长等待时间,tw根据网络状况确定。
[0026] 好友节点FP(Friend Peer,好友节点)是指与客户节点定期交换BM信息和数据的节点。好友节点的选取过程具体是:
[0027] 1)、客户节点向除推送节点外的节点广播联合消息,联合消息的内容是客户节点请求与节点FP1成为好友节点,互相交换BM信息和数据。节点FP1为客户节点的邻居节点中除推送节点外的某个节点。
[0028] 2)、节点FP1收到客户节点的联合消息后,若节点FP1上传带宽可以支持与客户节点进行BM信息交换并向客户节点提供数据块,则将客户节点作为自己的好友节点,并直接发送确认消息给客户节点,表明节点FP1与客户节点成为好友节点,若节点FP1上传带宽不支持与客户节点进行BM信息交换并向客户节点提供数据块,则节点FP1不予响应。
[0029] 3)、客户节点在收到节点FP1的确认消息后,向节点FP1发送回复消息,表明客户节点确认与节点FP1成为好友节点。客户节点与节点FP1开始交换BM信息来获取对方数据。若节点FP1发送确认消息后在tw的时间内未收到回复消息,从好友节点中删除客户节点。
[0030] 4)、若客户节点在2tw的时间内未收到K个节点的确认消息,则向已确认的某个好友节点FP1请求其邻居节点列表并向节点FP1的邻居节点广播联合消息。所述的K表示客户节点所维护的好友节点的个数,K的取值由客户节点根据自身的下载带宽确定,通常,8≤K≤15。
[0031] 节点通过步骤2)到步骤4)的过程确认的好友节点数量达到K时,对其它节点发送确认消息不予响应。
[0032] 备用节点BP是指客户节点的邻居节点列表中除推送节点和好友节点外剩余的节点,客户节点既不与备用节点交换BM信息,也不向其进行数据请求,只确定备用节点是否在线,备用节点的选取过程具体是:
[0033] 1)、客户节点将除推送节点和好友节点外的所有剩余节点作为备用节点,并向备用节点广播带有客户节点信息的心跳消息。
[0034] 2)、节点BP1收到携有客户节点信息的心跳消息后确认自己的邻居节点个数,若节点BP1的邻居节点个数小于(M+10),则将客户节点加入到备用节点列表中,并回复携有节点BP1信息的心跳消息;若节点BP1的邻居节点个数大于等于(M+10),则对客户节点发送的心跳消息不予响应。M的取值由P2P网络状况确定。节点BP1为客户节点的邻居节点中除推送节点和好友节点外的某个节点。
[0035] 3)、客户节点在tw的时间内未收到节点BP1的心跳消息,则从备用节点中删除节点BP1。
[0036] 进一步地,当客户节点与推送节点或好友节点失去连接时,立即从备用节点中选择节点进行连接。
[0037] 进一步地,当客户节点的邻居节点个数少于(M-10)时,客户节点向跟踪服务器发送请求来获得更多的备用节点。
[0038] h.若客户节点的下载带宽大于基本流和增强流的叠加码率,且本地基本流缓冲区已存满基本流数据时,则向推送节点和好友节点请求增强流的数据。所述的叠加码率是指基本流和增强流的码率之和。
[0039] 客户节点需在本地维护一个用于接收基本流数据的缓冲区Buffer_base,可按顺序存储256个数据块,每个数据块存放500毫秒的媒体流数据。缓冲区按播放时间的先后分为拉区域和推区域,拉区域根据所需数据的紧急程度可分为紧急区和非紧急区。客户节点同时需要维护一个用于接收增强流媒体数据具有相同结构的缓冲区Buffer_enhance。客户节点定期与邻居节点相互交换缓冲区映射(BM)来获取邻居节点的缓冲区数据情况,并向适当的节点请求流媒体数据块。本发明采用推拉结合的数据调度策略来进行节点间的流媒体数据交换。客户节点选择一个推送节点,其推区域中的数据由其选定的推送节点直接推送。拉区域中的数据则由其主动向好友节点请求。随着播放时间的推进,前一时刻的推区域会变成下一时刻的拉区域,节点可以通过主动请求的方式获取在推送过程中没有获得的数据块。
[0040] 本发明方法采用MDC方案解决媒体数据流的编码问题,通过从超级节点处快速获取启动数据的方式降低启动时延;并用推拉结合的数据调度策略,在保证数据传输效率的同时保证数据块的完整性。本发明所提出的P2P流媒体直播方法具有以下优点:
[0041] 1、节点在启动播放时仅仅请求基本流的数据,所需带宽较小,由于客户节点首先向超级节点请求基本流数据,能较快获取启动数据从而有效降低启动时延,提高服务质量。
[0042] 2、节点首先保证基本流数据的稳定获取,在带宽允许的情况下进一步向其它节点请求增强流的数据。因此节点既能保证播放的稳定和流畅性,又能根据自身的带宽情况来获得更好得播放体验。
[0043] 3、通过推拉结合的缓冲区调度策略,提高了网络的分发效率。在离播放时间较远的推区域使用推模式,减少不必要请求引起的传输延迟和网络开销,减少了协议本身带来的带宽开销。在离播放时间较近的拉区域,采用多点下载方式,均衡节点负载,提高网络的稳定性及对高度动态的网络环境的适应能力。
[0044] 4、流媒体服务提供商可以根据节目的热门程度,在线节点数量以及超级节点的负载情况灵活的增加或减少超级节点的数量,提高P2P网络的可扩展性。

附图说明

[0045] 图1为多描述编码方法示意图;
[0046] 图2为P2P流媒体直播网络的示意图;
[0047] 图3为节点CP1加入P2P网络并获取初始服务信息的过程示意图;
[0048] 图4为节点CP1获取流媒体数据的过程示意图;
[0049] 图5为节点CP1选择推送节点的过程示意图;
[0050] 图6为节点CP1选择好友节点的过程示意图;
[0051] 图7为节点CP1选择备用节点的过程示意图;
[0052] 图8为流媒体数据缓冲区结构示意图;
[0053] 图9为缓冲区映射(BM)示意图;
[0054] 图10为节点CP1推拉结合地进行调度数据的过程示意图;
[0055] 图11为节点CP1与推送节点、好友节点、超级节点间获取数据的关系示意图。

具体实施方式

[0056] 本发明提出的P2P流媒体直播网络及相应的实现方法适用于电信级运营的宽带城域网,目的是为了减小节点在启动流媒体播放后的启动等待时间,并使节点获得流畅的播放体验。
[0057] 图2是本发明所述的分布式P2P流媒体直播网络的示意图,P2P流媒体分发网络由服务器组和节点组共同构成。其中,服务器组包括认证服务器、Web应用服务器、跟踪服务器和源服务器;节点组包括超级节点组和普通节点组。
[0058] 认证服务器用于处理普通节点的注册和登陆认证请求,并将通过认证的用户重定向到Web应用服务器。
[0059] Web应用服务器用于向节点提供最新的频道列表和跟踪服务器的地址。Web应用服务器根据源服务器提供的频道信息和跟踪服务器提供的每个频道的在线节点数量动态地更新频道列表。
[0060] 跟踪服务器用于维护所有频道的在线节点信息,同时处理新节点的加入请求,并为新加入的节点提供初始的邻居节点列表,超级节点信息以及相应频道的初始化信息,此外,跟踪服务器须定期发送每个频道的在线节点数量到Web应用服务器。
[0061] 跟踪服务器为新加入的节点,提供频道初始化信息、超级节点信息和邻居节点列表的具体过程是:
[0062] i.普通节点向跟踪服务器发送加入消息,加入消息的内容是某一频道的频道标识符CID以及普通节点自身的节点信息。
[0063] ii.跟踪服务器在收到普通节点的加入消息后,根据加入消息中的CID,返回对应的频道初始化信息;根据加入消息中的普通节点的IP地址,返回与普通节点物理上最邻近的一个或多个超级节点SP信息。
[0064] iii.跟踪服务器读取该CID对应的频道的在线节点信息。若该频道当前在线节点数量少于或等于M个,跟踪服务器将所有这些节点都作为初始邻居节点返回给普通节点;若该频道在线节点数量大于M个,则跟踪服务器根据节点选择算法选择其中M个节点作为初始邻居节点返回给普通节点。M的取值由P2P网络状况确定,若当前在线节点具有较大的上传带宽,则M取25;若在线节点上传带宽较小,则M取35。
[0065] 所述的节点选择算法指的是跟踪服务器根据节点的IP地址所在的自治系统(AS,Autonomous System)进行节点选择。根据节点的IP地址、ISP(Internet Service Provider,因特网服务提供商)和自治区域(公司、学校等)的不同可以将节点划分到不同的AS中。节点选择算法具体是:
[0066] i.当有普通节点加入时,跟踪服务器根据该普通节点的IP地址查询其所属的AS。
[0067] ii.将该普通节点信息存储至其所属的AS中,并随机返回该AS内N个节点的节点信息给普通节点。N=min(X,M)*0.8,X为该AS内节点的数量,min(X,M)表示取X和M中较小的值。
[0068] iii.跟踪服务器随机返回属于其他AS的(M-N)个节点的节点信息,以保持普通节点所属的AS与其他AS的连通性。
[0069] 所述源服务器将节目源数据进行非平衡的多描述编码,编码后形成一条基本流和一条增强流。同时,源服务器将连续的基本流和增强流分别分割成一个个播放时间在500毫秒左右的数据块,并按照播放时间顺序为数据块标记序号并进行封装,对同一播放时刻的数据块标记相同的时间戳,同一播放时刻的基本流和增强流数据包有相同的序号和时间戳。源服务器首先将基本流和增强流的数据包发送至超级节点,在仍有带宽剩余的情况下同时向P2P网络中的普通节点分发基本流和增强流的数据。普通节点根据接收到的数据包序号和时间戳进行排序及解码,恢复成连续的流媒体文件后进行播放。同时,源服务器定期向Web应用服务器发送频道信息,并向跟踪服务器定期发送当前编码时刻对应的起始数据块序号。
[0070] 所述的超级节点是指由流媒体服务提供商在P2P网络中部署的长期在线的节点,流媒体服务提供商根据P2P网络中普通节点的分布状况和带宽状况在不同地区部署相应数量的超级节点。超级节点拥有高处理性能、高带宽及大容量硬盘,与源服务器及其他超级节点之间有较快的连接速度和较小的响应时间。超级节点从源服务器和其他超级节点处获取基本流和增强流,并对获取的基本流和增强流数据缓存较长时间,以尽可能多服务的原则向普通节点提供基本流和增强流数据。超级节点向普通节点提供基本流和增强流的数据,并优先响应刚加入P2P网络的节点,为其提供最初播放所需的启动数据,以降低点击播放时延。
[0071] 进一步地,流媒体服务提供商可以根据节目的热门度和在线用户的数量灵活地增加或减少超级节点。流媒体服务器提供商可以根据实际情况,选择部分超级节点只提供基本流数据,而其余的超级节点同时提供基本流和增强流的数据。
[0072] 本发明所述的普通节点是指通过P2P客户端软件或浏览器插件形式接入互联网并请求P2P流媒体服务的节点。
[0073] 若一个普通节点CP1希望加入该P2P网络并观看某个频道,则须通过服务器的认证并获取初始的服务信息。图3为节点CP1加入到P2P网络并获取初始服务信息的过程,具体方法为:
[0074] a.节点CP1通过因特网连接到认证服务器请求登录认证;
[0075] b.若节点CP1没有合法的账号,则需要向认证服务器提交用户名和密码进行注册;若节点CP1为已注册用户,则输入用户名和密码进行认证。
[0076] c.节点CP1通过认证后,认证服务器为其分配一个唯一的用户标识NID,并将节点CP1重定向到Web应用服务器。
[0077] d.Web应用服务器向节点CP1返回最新的频道列表和跟踪服务器地址。
[0078] e.节点CP1通过点击感兴趣的频道,向跟踪服务器发送加入到该频道的加入消息。
[0079] f.跟踪服务器收到节点CP1的加入消息后,返回该频道的频道初始化信息、超级节点信息和邻居节点列表。
[0080] 图4是所述节点CP1获取流媒体数据的过程。节点CP1通过向超级节点和邻居节点发起请求来获取流媒体数据,节点CP1获取流媒体数据的具体方法为:
[0081] g.节点CP1根据收到的频道初始化信息首先向超级节点请求启动数据。
[0082] h.节点CP1获取超级节点提供的启动数据并根据本地节点选择策略选择出推送节点、好友节点和备用节点,然后节点CP1向推送节点、好友节点和备用节点发起连接并请求基本流的数据。
[0083] i.若客户节点的下载带宽大于基本流和增强流的叠加码率,且本地基本流缓冲区已存满基本流数据时,则向推送节点和好友节点请求增强流的数据。
[0084] 图5、图6和图7为节点CP1根据本地节点选择策略与邻居节点列表中的节点交换缓冲区映射(BM)信息,并根据收到的BM信息选择出推送节点、好友节点和备用节点的过程。其中图5为推送节点的选取过程,具体是:
[0085] 1)、节点CP1根据收到的BM信息选出起始数据块序号大于节点CP1的节点。
[0086] 2)、节点CP1从选出的节点中随机选择一个节点PP1请求数据流推送。
[0087] 3)、若节点PP1的上传带宽大于等于基本流码率,则节点PP1推送数据流给节点CP1,若节点PP1的上传带宽小于基本流码率,则节点PP1不予响应。
[0088] 4)、若节点CP1在tw的时间内未收到节点PP1推送的数据流,则返回步骤2)重新选择节点。
[0089] 图6为好友节点的选取过程,具体是:
[0090] 1)、节点CP1向除推送节点外的节点广播联合消息,联合消息的内容是节点CP1请求与节点FP1成为好友节点,互相交换BM信息和数据。节点FP1为节点CP1的邻居节点中除推送节点外的某个节点。
[0091] 2)、节点FP1收到节点CP1的联合消息后,节点FP1检查自身上传带宽是否足以支持与节点CP1进行BM信息交换并向节点CP1提供数据块。
[0092] 3)、若节点FP1上传带宽可以支持与节点CP1进行数据交换,则将节点CP1作为自己的好友节点,并直接发送确认消息给节点CP1,表明节点FP1与节点CP1成为好友节点,若节点FP1上传带宽不支持与节点CP1进行BM信息交换并向节点CP1提供数据块,则节点FP1不予响应。
[0093] 4)、节点CP1在收到节点FP1的确认消息后,向节点FP1发送回复消息,表明节点CP1确认与节点FP1成为好友节点。节点CP1与节点FP1开始交换BM信息来获取对方数据。若节点FP1在发送确认消息后在tw的时间内未收到回复消息,从好友节点中删除节点CP1。
[0094] 5)、节点通过步骤2)到步骤4)的过程不断地确认好友节点,若节点CP1在2tw的时间内未收到K个节点的确认消息,则向已确认的某个好友节点FP1请求其邻居节点列表并向节点FP1的邻居节点广播联合消息。
[0095] 6)、若节点CP1在2tw的时间内收到K个节点的确认消息,则对其它节点的确认消息不予响应。
[0096] 图7为备用节点的选取过程,具体是:
[0097] 1)、节点CP1将除推送节点和好友节点外的所有剩余节点作为备用节点,并向备用节点广播带有节点CP1信息的心跳消息。
[0098] 2)、节点BP1收到携有节点CP1信息的心跳消息后确认自己的邻居节点个数。
[0099] 3)、若节点BP1的邻居节点个数小于(M+10),则将节点CP1加入到备用节点列表中,同时节点BP1回复节点CP1携有节点BP1信息的心跳消息。
[0100] 4)、若节点BP1的邻居节点个数大于等于(M+10),则对节点CP1发送的心跳消息不予响应。若节点CP1在tw的时间内未收到节点BP1的心跳消息,则从备用节点中删除节点BP1。
[0101] 图8为节点CP1的媒体数据缓冲区结构示意图。节点CP1的流媒体数据缓冲区是指用于缓存从邻居节点获取的流媒体数据块的一片内存区域。节点CP1接收基本流数据的缓冲区Buffer_base可存储256个数据块,每个数据块存放500毫秒的媒体流数据。缓冲区按播放时间的先后分为拉区域和推区域,拉区域根据所需数据的紧急程度可分为紧急区和非紧急区。节点CP1同时需要维护一个用于接收增强流媒体数据具有相同结构的缓冲区Buffer_enhance。
[0102] 图9为缓冲区映射(BM)示意图。缓冲区映射用于标识节点缓冲区中的数据块是否已获取。节点CP1用512bit的BM来表示自身的缓冲区状态,前256bit和后256bit分别表示Buffer_base和Buffer_enhance的缓冲区信息,每个bit的取值表示相应缓冲区的一个数据块的状态,1表示节点已经获得相应的数据块,0表示还没有获得相应的数据块。
[0103] 节点CP1定期与邻居节点相互交换缓冲区映射(BM)来获取邻居节点的缓冲区数据情况,并向适当的节点请求流媒体数据块。本发明采用推拉结合的数据调度策略来进行节点间的流媒体数据交换。节点CP1选择一个推送节点,其推区域中的数据由其选定的推送节点直接推送。拉区域中的数据则由其主动向好友节点请求。随着播放时间的推进,前一时刻的推区域会变成下一时刻的拉区域,节点CP1可以通过主动请求的方式获取在推送过程中没有获得的数据块。
[0104] 图10以节点CP1请求基本流数据为例,说明推拉结合方式的数据调度过程。增强流的数据调度过程跟基本流相同。节点PP1为节点CP1的推送节点,节点PP1收到数据后,就直接推送给节点CP1。节点FP1和FP4为节点CP1的其中两个好友节点,节点CP1缺少序号为1086,1088和1091的数据块,节点CP1根据好友节点FP1和FP4的BM信息,得到FP1拥有序号为1086和1091的数据块,FP5拥有序号为1088和1091的数据块。节点CP1向FP1请求序号为1086和1091的数据块,同时向FP4请求序号为1088的数据块。节点FP1和节点FP4收到节点CP1的请求,就将节点CP1需要的数据块发送给节点CP1。
[0105] 图11表示节点与推送节点、好友节点、超级节点间获取数据的关系。超级节点SP1推送启动数据给节点CP1,并为一些带宽较高的普通节点一直推送数据,使这些普通节点成为网络中其他普通节点的推送节点。节点PP1为节点CP1的推送节点,节点PP1将收到的数据直接推送给节点CP1;节点FP1、FP2、FP3、FP4、FP8、FP9为节点CP1的好友节点,与节点CP1进行BM交互并相互获取数据。节点CP2的推送节点是节点PP2,节点FP5、FP6、FP7、FP8、FP9为节点CP2的好友节点。可以看出,一个节点同时与多个节点保持好友节点的关系,相互交换BM以获取数据,使整个P2P网络保持联通。
[0106] 本发明方法采用MDC方案解决媒体数据流的编码问题,通过从超级节点处快速获取启动数据的方式降低启动时延;并用推拉结合的数据调度策略,在保证数据传输效率的同时保证数据块的完整性。本发明所提出的P2P流媒体播放方法具有以下优点:
[0107] 1、节点在启动播放时仅仅请求基本流的数据,所需带宽较小,由于节点CP1优先向超级节点请求基本流数据,能较快获取启动数据从而有效降低启动时延,提高服务质量。
[0108] 2、节点优先保证基本流数据的稳定获取,在带宽允许的情况下进一步向其它节点请求增强流的数据。因此节点既能保证播放的稳定和流畅性,又能根据自身的带宽情况来获得更好得播放体验。
[0109] 3、通过推拉结合的缓冲区调度策略,提高了网络的分发效率。在离播放时间较远的推区域使用推模式,减少不必要请求引起的传输延迟和网络开销,减少了协议本身带来的带宽开销。在离播放时间较近的拉区域,采用多点下载方式,均衡节点负载,提高网络的稳定性及对高度动态的网络环境的适应能力。
[0110] 4、流媒体服务提供商可以根据节目的热门程度,在线节点数量以及超级节点的负载情况灵活的增加或减少超级节点的数量,提高P2P网络的可扩展性。