CN101365000B - 一种流媒体数据传送方法及网络节点 - Google Patents
一种流媒体数据传送方法及网络节点 Download PDFInfo
- Publication number
- CN101365000B CN101365000B CN2008102227832A CN200810222783A CN101365000B CN 101365000 B CN101365000 B CN 101365000B CN 2008102227832 A CN2008102227832 A CN 2008102227832A CN 200810222783 A CN200810222783 A CN 200810222783A CN 101365000 B CN101365000 B CN 101365000B
- Authority
- CN
- China
- Prior art keywords
- frame
- node
- data
- classification
- upstream node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Abstract
本发明公开了一种流媒体数据传送方法及网络节点,应用于基于P2P的流媒体直播系统中,该方法包括:确定与本节点建立点对点P2P连接的上游节点;确定所述上游节点需要提供的数据帧对应的数据帧类别信息,并将所述数据帧类别信息通知所述上游节点;以及接收所述上游节点根据所述数据帧类别信息返回的对应类别的数据帧。上述方法通过对流媒体数据帧进行分类后传送,实现了高效、高可靠性、低传输时延的数据传送过程。
Description
技术领域
本发明涉及流媒体技术领域,尤指一种基于P2P流媒体直播系统的流媒体数据传送方法及网络节点。
背景技术
随着互联网的飞速发展和对多媒体信息需求的不断增加,传统的客户端/服务器(Client/Server,C/S)模式的流媒体服务模式已经渐渐不能满足客户端数量逐渐增多的需求了。图1为传统C/S模式的系统架构示意图。其中每个用户客户端均与流媒体服务器建立单独的通信通道,通过流媒体服务器从互联网协议控制(Internet Protocol Control,IPC)站点获取流媒体数据,因此当客户端数量急剧增加时,服务器的负载也会急剧增加,服务器的可用资源,如:中央处理器(Central Processing Unit,CPU),内存,特别是带宽资源,已经成为为系统的瓶颈。当服务器的服务能力达到上限时,将不能为新加入的用户提供服务,系统的规模也受到了限制,可见,传统模式的流媒体点播系统没有很好的可扩展性。
端对端(Peer to Peer,P2P)技术的出现从根本上改变了分布式系统的这一固有模式,如图2所示。即为P2P模式的流媒体传输系统的结构示意图。除了通过流媒体服务器从IPC站点获取流媒体数据外,还从各个用户客户端分享流媒体数据,每个节点既充当客户端又充当服务器,享用其它节点提供的流媒体服务的同时也为其它节点提供流媒体服务。P2P模式具有以下几个方面的显著特点:
(1)非中心化:系统中的资源分散在各个节点上,信息的传递的实现都直接在节点之间进行,可以无需中间环节和服务器的介入,避免了可能存在的瓶颈。非中心化是P2P技术的基本特点,由此也带来了其在可扩展性、健壮性等方面的优势。
(2)可扩展性:在P2P模式中,随着用户数量的增加,服务的需求增加的同时,系统整体的资源和服务能力也得到扩充,始终能较容易的满足用户的需求,整个体系是全分布的,不存在瓶颈。其可扩展性理论上认为是无限的。
(3)健壮性:由于P2P模式的服务是分散在各个节点之上的,部分节点遭到破坏对其它部分的影响很小。P2P模式通常是以自组织的方式建立起来,允许节点白由的加入和离开,一般能够在部分节点失效时自动恢复,具有耐攻击、高容错的优势。
(4)高性价比:采用P2P模式可以有效地利用互联网中散布的大量普通节点的计算、存储、网络资源,从而降低成本。
(5)负载均衡:P2P环境下每个节点既是服务器又是客户端,减少了对总服务器计算、存储等能力的要求,由于资源分布在各个节点,更好的实现了整个网络的负载均衡。
由于P2P模式的上述优势,将P2P技术应用于流媒体直播业务,可以成功解决传统C/S流媒体直播系统中服务能力有限,可扩展性差的问题。在基于P2P的流媒体直播系统中,每个对等节点都会缓存视频数据,观看直播的用户越多,网络上冗余的数据就越多。每个点播的用户可以充分利用P2P网络中其他用户节点的资源,特别是网络带宽资源,从这些用户的客户端上获取流媒体数据。这样,服务器的负载就会降低,整个系统的可扩展性也会提高。
目前的以P2P技术实现的流媒体直播系统,节点之间的数据调度的实现基本上是:节点根据自身需求以秒为单位请求所需要的数据,接收到请求的节点返回与指定时间对应的数据。这样的方法存在着一些弱点:
由于调度粒度比较大导致重传效率低。一秒钟内的数据如果部分丢失,那么这一秒的数据必须全部重传,浪费了很多网络带宽。
服务效率低。每个节点必须等待一秒钟的数据齐全以后,才能为其它节点提供这一秒的数据。
对每一秒的数据,节点均需要选择目标节点发送一次请求,目标节点返回请求中指定的数据。不能实现目标节点主动推送数据给发送请求的节点。
发明内容
本发明实施例提供一种流媒体数据传送方法及网络节点,通过对流媒体数据帧进行分类后传送,实现了高效、高可靠性、低传输时延的数据传送过程。
一种流媒体数据传送方法,包括:
确定与本节点建立端对端P2P连接的上游节点;
确定所述上游节点需要提供的数据帧对应的数据帧类别信息,具体包括:将根据设定的数据帧分类规则划分出的X个数据帧类别分配给所述上游节点,得到每个上游节点需要提供的数据帧对应的数据帧类别信息;
将所述数据帧类别信息通知所述上游节点;
接收所述上游节点根据所述设定的数据帧分类规则,确定本地缓存的数据帧所属的数据帧类别,并根据接收到的所述数据帧类别信息返回的对应类别的数据帧。
根据本发明的上述方法,所述确定与本节点建立点对点P2P连接的上游节点之后,还包括:
周期性获取P2P网络中的在线节点列表,所述本节点从所述在线节点列表中选择在线节点请求建立连接;
当本节点与新的在线节点建立连接,或与已建立连接的上游节点之间的连接断开时,重新确定与本节点建立连接的上游节点。
根据本发明的上述方法,所述设定的数据帧分类规则包括:
根据对数据帧号进行模X运算的结果,将数据帧划分为X个数据帧类别;或
根据数据帧号的末位数字特征,将数据帧划分为X个数据帧类别。
根据本发明的上述方法,所述接收所述上游节点根据所述设定的数据帧分类规则,确定本地缓存的数据帧所属的数据帧类别,并根据接收到的所述数据帧类别信息返回的对应类别的数据帧后,还包括:
将接收到的数据帧号大于本节点的当前播放数据帧号的数据帧进行缓存。
本发明的上述方法,还包括:检查缓存的数据帧的帧号是否连续,若否,则确定不连续的数据帧号对应的数据帧为缺失的数据帧,并向所述上游节点请求所述缺失的数据帧。
一种流媒体数据传送方法,包括:
确定与本节点建立端对端P2P连接的上游节点;
确定所述上游节点需要提供的数据帧对应的数据帧类别信息,具体包括:将根据选择的数据帧分类规则划分出的X个数据帧类别分配给所述上游节点,得到每个上游节点需要提供的数据帧对应的数据帧类别信息;
将所述选择的数据帧分类规则和所述数据帧类别信息通知所述上游节点;
接收所述上游节点根据接收到的所述选择的数据帧分类规则,确定本地缓存的数据帧所属的数据帧类别,并根据接收到的所述数据帧类别信息返回的对应类别的数据帧。
根据本发明的上述方法,所述确定与本节点建立点对点P2P连接的上游节点之后,还包括:
周期性获取P2P网络中的在线节点列表,所述本节点从所述在线节点列表中选择在线节点请求建立连接;
当本节点与新的在线节点建立连接,或与已建立连接的上游节点之间的连接断开时,重新确定与本节点建立连接的上游节点。
根据本发明的上述方法,所述选择的数据帧分类规则,包括:
根据对数据帧号进行模X运算的结果,将数据帧划分为X个数据帧类别;或
根据数据帧号的末位数字特征,将数据帧划分为X个数据帧类别。
根据本发明的上述方法,所述接收所述上游节点根据接收到的所述选择的数据帧分类规则,确定本地缓存的数据帧所属的数据帧类别,并根据接收到的所述数据帧类别信息返回的对应类别的数据帧后,还包括:
将接收到的数据帧号大于本节点的当前播放数据帧号的数据帧进行缓存。
本发明的上述方法,还包括:检查缓存的数据帧的帧号是否连续,若否,则确定不连续的数据帧号对应的数据帧为缺失的数据帧,并向所述上游节点请求所述缺失的数据帧。
一种网络节点,包括:第一确定模块、第二确定模块、通知模块和数据接收模块;
所述第一确定模块,用于确定与本节点建立端对端P2P连接的上游节点;
所述第二确定模块,用于确定所述上游节点需要提供的数据帧对应的数据帧类别信息;具体用于将根据设定的或选择的数据帧分类规则划分出的X个数据帧类别分配给所述上游节点,得到每个上游节点需要提供的数据帧对应的数据帧类别信息;
所述通知模块,用于将所述数据帧类别信息通知所述上游节点;或将所述数据帧类别信息和所述选择的数据帧分类规则通知所述上游节点;
所述数据接收模块,用于接收所述上游节点根据所述数据帧类别信息返回的对应类别的数据帧;所述上游节点返回的对应类别的数据帧是根据所述设定的数据帧分类规则,确定本地缓存的数据帧所属的数据帧类别,并根据接收到的所述数据帧类别信息返回的;或所述上游节点返回的对应类别的数据帧是根据接收到的所述选择的数据帧分类规则,确定本地缓存的数据帧所属的数据帧类别,并根据接收到的所述数据帧类别信息返回的。
根据本发明的上述网络节点,所述第一确定模块,还用于:
周期性获取P2P网络中的在线节点列表,所述本节点从所述在线节点列表中选择在线节点请求建立连接;以及当本节点与新的在线节点建立连接或与已建立连接的上游节点之间的连接断开时,重新确定与本节点建立连接的上游节点。
根据本发明的上述网络节点,所述数据接收模块,还用于:
将接收到的数据帧号大于本节点的当前播放数据帧号的数据帧进行缓存。
本发明的上述网络节点,还包括:
完整性检查模块,用于检查缓存的数据帧的帧号是否连续,若否,则确定不连续的数据帧号对应的数据帧为缺失的数据帧,并向所述上游节点请求所述缺失的数据帧;
所述数据接收模块,还用于接收并缓存所述上游节点返回的所述缺失的数据帧。
本发明的上述网络节点,还包括:
类别确定及发送模块,用于根据设定的数据帧分类规则,确定本地缓存的数据帧所属的数据帧类别,并接收其他节点发送的数据帧类别信息,向所述其他节点返回对应类别的数据帧;或
用于接收其他节点发送的数据帧分类规则和数据帧类别信息,根据接收的数据帧分类规则确定本地缓存的数据帧所属的数据帧类别,并根据接收的所述数据帧类别信息向所述其他节点返回对应类别的数据帧。
本发明实施例提供的流媒体数据传送方法及网络节点,通过确定与本节点建立点对点P2P连接的上游节点;确定上游节点需要提供的数据帧类别信息,并通知上游节点;各上游节点仅返回对应类别的数据帧。不仅充分利用了P2P网络的流媒体传送优点,且由于数据的传送不是以现有技术的秒级为单位,而是以数据帧为单位,不需要等上游节点缓存了一秒钟内的全部数据后才能获取这一秒内的数据;也不需要等到一秒钟内的数据齐全后再传给其他节点,显著提高数据传输的效率,降低了数据传输时延。
以数据帧为单位传送数据,数据调度的粒度减小后,在数据缺失时,只需重传缺失的数据帧,而不必再重传一秒内的所有数据,节省了网络带宽资源。
采用数据帧分类传送的方式,只要确定出每个上游节点需传送的数据帧类别,通知每个上游节点即可,而不必针对每个数据帧频繁发送数据获取请求,实现了上游节点在拥有相应类别的数据帧时主动推送对应类别的数据帧给发送数据获取请求的节点,提高了可靠性和服务的效率,节约了网络资源。
附图说明
图1为现有技术中基于C/S模式的系统架构示意图;
图2为现有技术中基于P2P技术的系统架构示意图;
图3为本发明实施例一中流媒体数据传送方法的流程图;
图4为本发明实施例一中对数据帧按类别进行分配的示意图;
图5为本发明实施例二中流媒体数据传送方法的流程图;
图6为本发明实施例中数据缓存的流程图;
图7为本发明实施例中获取缺失数据帧的流程图;
图8为本发明实施例中网络节点的结构示意图。
具体实施方式
实施例一
本发明实施例一提供的流媒体数据传送方法,应用于基于P2P流媒体直播系统中,其流程如图3所示,执行步骤如下:
S101:登录P2P流媒体直播系统服务器获取在线节点列表。
特别的,由于服务器中的在线节点列表根据实际链路情况处于实时更新状态,因此用户登录后,会定期(即周期性)查询在线节点列表,以便获取更新后的在线节点信息。
S102:从获取的在线节点列表中选出若干节点,请求建立连接。
优先选取链路状况较好的节点请求建立连接。选取的节点数目一般不会太大,一般情况下不超过8个。
S103:确定与本节点建立端对端P2P连接的上游节点。
其中,连接建立成功的节点即本节点的上游节点。
确定出上游节点时,同时可以确定出上游节点的个数。
例如:本节点与三个在线节点成功建立了连接,则确定出有这三个节点为本节点的上游节点,同时,可以确定上游节点的个数为N=3。
由于服务器中的在线节点列表根据实际链路情况处于实时更新状态,因此一个用户的上游节点也动态变化,而并非固定不变的。当发现新的链路状况比较好的在线节点时,可以发起建立连接的请求;当连接建立成功的某个上游节点的链路状况变差时,可以选择抛弃该上游节点。
当与新的在线节点建立连接或与以已建立连接的上游节点之间的连接断开时,都会重新确定上游节点及其个数N。
特别的,当本节点登录服务器第一次获取在线节点列表时,在确定与本节点建立连接的上游节点之后,可以确定出各上游节点中的当前最新播放数据帧号,并以各上游节点中当前最新播放数据帧号中的最大者作为本节点的当前播放数据帧号,本节点从该当前播放数据帧号开始获取并播放其后的数据帧。
确定各上游节点中的当前最新播放数据帧号中的最大者,具体包括:
向每个上游节点发送帧号查询消息,各上游节点返回相应的当前最新播放数据帧号;
比较所返回的各数据帧号的大小,得到最大的播放数据帧号,即作为本节点的当前播放数据帧号。
仍以三个上游节点为例,若第一个上游节点的当前最新播放数据帧号为29、第二个为上游节点的当前最新播放数据帧号为32、第三个为上游节点的当前最新播放数据帧号为30,则确定本节点的当前播放数据帧号为32。
S104:本节点选择一种数据帧分类规则对数据帧进行分类,确定每个上游节点需要提供的数据帧对应的数据帧类别信息。具体为:
本节点选择一种数据帧分类规则,采用所选择的数据帧分类规则将数据帧划分为X个数据帧类别;
将划分出的X个数据帧类别分配给确定出的上游节点,得到每个上游节点需要提供的数据帧类别信息。
其中,数据帧分类规则可以是任何能够将数据帧分类的规则。下面以对数据帧号执行模X运算,根据运算结果将数据帧划分为X个数据帧类别;或根据数据帧号的末位数字特征,将数据帧划分为X个数据帧类别为例具体说明。
举例一:通过模X运算将数据帧划分为X个数据帧类别。具体为:
对数据帧号进行模X运算,得到X个数据帧类别。其中。对数据帧号进行模X运算是指用数据帧号除以X后的余数。
将划分出的X个类别分配给确定出的上游节点,得到每个上游节点需要提供的数据帧对应的数据帧类别信息。
较佳的,模X运算时,X的取值最好选择大于上游节点个数N的值。将划分出的X个数据帧类别尽可能平均分配给各上游节点。
下面以模32运算,对上述当前最新播放数据帧号32之后的数据帧进行分类,模32运算后分配给确定出的3个上游节点为例具体说明。如图4所示为模32运算后,各数据帧所对应的数据帧类别及分配情况示意图。
对当前最新播放数据帧号32之后的数据帧号进行模32运算。其中:
对第32帧数据,其数据帧号32模32为0;
对第33帧数据,其数据帧号33模32为1;
……;
对第63帧数据,其数据帧号63模32为31;
对第64帧数据,其数据帧号64模32为0;
……。
则:模运算结果为0的数据帧为第1类数据帧;
模运算结果为1的数据帧为第2类数据帧;
……;
模运算结果为31的数据帧为第32类数据帧;
从而实现将数据帧划分成32个数据帧类别。然后将这32个数据帧类别尽可能平均分配给确定出的3个上游节点,如对第一个上游节点分配第1到第11数据帧类别,对第二个上游节点分配第12到第22数据帧类别,对第三个上游节点分配第23到第32数据帧类别。
举例二:通过数据帧号的末位数字特征,将数据帧划分为X个数据帧类别。
根据数据帧号的末位数字特征对数据帧进行分类,得到X个数据帧类别。
将划分出的X个数据帧类别分配给确定出的上游节点,得到每个上游节点需要提供的数据帧对应的数据帧类别信息。
较佳的,X的取值最好大于上游节点个数N的值。将划分出的X个数据帧类别尽可能平均分配给确定出的上游节点。
下面以将数据帧号的末位数字特征相同的数据帧归为一类,分类后分配给确定出的3个上游节点为例具体说明。例如:
数据帧号的末位数字为1,属于第1数据帧类别;
数据帧号的末位数字为2,属于第2数据帧类别;
……;
数据帧号的末位数字为0,属于第10数据帧类别;
从而实现将数据帧划分成10个数据帧类别。然后将这10个数据帧类别尽可能平均分配给确定出的3个上游节点,如对第一个上游节点分配第1到第4数据帧类别,对第二个上游节点分配第5到第7数据帧类别,对第三个上游节点分配第8到第10数据帧类别。
S105:将所选择的数据帧分类规则和确定出的数据帧类别信息分别通知给各上游节点。
沿用上边举例一,通知第一个上游节点采用的数据帧分类规则为:对数据帧号执行模32运算,根据运算结果分类,且通知的数据帧类别信息为:第1到第11数据帧类别;
通知第二个上游节点采用的数据帧分类规则为:对数据帧号执行模32运算,根据运算结果分类,且通知的数据类别信息为第12到第22数据帧类别;
通知第三个上游节点采用的数据帧分类规则为:对数据帧号执行模32运算,根据运算结果分类,且通知的数据类别信息为第23到第32数据帧类别。
沿用上边举例二,通知第一个上游节点采用的数据帧分类规则为:根据数据帧末位数字特征进行分类,且通知的数据帧类别信息为:第1到第4数据帧类别;
通知第二个上游节点采用的数据帧分类规则为:根据数据帧末位数字特征进行分类,且通知的数据类别信息为第5到第7数据帧类别;
通知第三个上游节点采用的数据帧分类规则为:根据数据帧末位数字特征进行分类,且通知的数据类别信息为第8到第10数据帧类别。
S106:各上游节点根据接收到数据帧分类规则,确定本地缓存的数据帧所属的数据帧类别,并根据接收到的数据帧类别信息返回的对应类别的数据帧。
各上游节点根据接收到的数据帧分类规则,确定本地缓存的数据帧所属的数据帧类别。例如:
对本地缓存的每一个数据帧执行模X运算,其中X的取值与步骤S105中相同,确定本地缓存的每一个数据帧所属的数据帧类别,并返回接收到数据帧类别信息中所规定类别的数据帧。或对本地缓存的每一个数据帧,根据数据帧号的末位数字特征,确定其所属的数据帧类别,并返回接收到数据帧类别信息中所规定类别的数据帧。
沿用上边的举例一,各上游节点对本地缓存的数据帧执行模32运算,然后第一个上游节点返回本地缓存的属于第1到第11数据帧类别的对应数据帧;第二个上游节点返回本地缓存的属于第12到第22数据帧类别的对应数据帧,第三个上游节点返回本地缓存的属于第23到第32数据帧类别的对应数据帧。
沿用上边的举例二,第一个上游节点返回本地缓存的数据帧号末位数字为1、2、3、4的对应数据帧;第二个上游节点返回本地缓存的数据帧号末位数字为5、6、7的对应数据帧,第三个上游节点返回本地缓存的数据帧号末位数字为8、9、0的对应数据帧。
实施例二
本发明实施例二提供的流媒体数据传送方法,应用于基于P2P流媒体直播系统中,本节点与上游节点之间预先设定数据帧分类规则,而不需要本节点将选用的数据帧分类规则通知给上游节点,其流程如图5所示,执行步骤如下:
S201、S202、S203同步骤S101、S102、S103,此处不再赘述。
S204:本节点根据设定的数据帧分类规则对数据帧进行分类,确定每个上游节点需要提供的数据帧类别信息。具体为:
本节点使用预先设定的数据帧分类规则,将数据帧划分为X个数据帧类别;
将划分出的X个数据帧类别分配给确定出的上游节点,得到每个上游节点需要提供的数据帧对应的数据帧类别信息。
其中,数据帧分类规则可以是任何能够将数据帧分类的规则。下面以通过对数据帧号执行模X运算,根据运算结果将数据帧划分为X个数据帧类别;或根据数据帧号的末位数字特征将数据帧划分为X个数据帧类别为例具体说明。
具体划分过程参见步骤S104中的举例一和举例二,此处不再赘述。
S205:将确定出的数据帧类别信息分别通知给各上游节点。
沿用上边举例一,通知第一个上游节点的数据帧类别信息为:第1到第11数据帧类别;通知第二个上游节点的数据类别信息为第12到第22数据帧类别;通知第三个上游节点的数据类别信息为第23到第32数据帧类别。
沿用上边举例二,通知第一个上游节点的数据帧类别信息为:第1到第4数据帧类别;通知第二个上游节点的数据类别信息为第5到第7数据帧类别;通知第三个上游节点的数据类别信息为第8到第10数据帧类别。
S206:各上游节点根据设定的数据帧分类规则确定本地缓存的数据帧所属的数据帧类别,并根据接收到的数据帧类别信息返回的相应类别的数据帧。
其中,设定的数据帧分类规则,例如为对数据帧号进行模X运算,则对本地缓存的每一个数据帧的数据帧号执行模X运算,其中X的取值与步骤S105中相同,确定本地缓存的每一个数据帧所属的数据帧类别,并返回接收到数据帧类别信息中所规定类别的数据帧;若设定的数据帧分类规则,为根据数据帧号的末位数字特征进行分类,则对本地缓存的每一个数据帧,根据数据帧号的末位数字特征,确定其所属的数据帧类别,并返回接收到数据帧类别信息中所规定类别的数据帧。
沿用上边的举例一,各上游节点对本地缓存的数据帧执行模32运算,然后第一个上游节点返回本地缓存的属于第1到第11数据帧类别的对应数据帧;第二个上游节点返回本地缓存的属于第12到第22数据帧类别的对应数据帧,第三个上游节点返回本地缓存的属于第23到第32数据帧类别的对应数据帧。
沿用上边的举例二,第一个上游节点返回本地缓存的数据帧号末位数字为1、2、3、4的数据帧;第二个上游节点返回本地缓存的数据帧号末位数字为5、6、7的数据帧,第三个上游节点返回本地缓存的数据帧号末位数字为8、9、0的数据帧。
本发明实施例提供的流媒体数据传送方法,还包括数据的接收及缓存过程,如图6所示,具体包括下列步骤:
S301:接收各上游节点返回的数据帧。
S302:判断接收到的数据帧帧号是否大于本地当前播放数据帧号。若否,执行步骤S303;若是,执行步骤S304。
S303:丢弃接收到的数据帧。
S304:缓存接收到的数据帧。
可以将接收到的数据帧存入缓存区,存入缓存区的数据可以供后续播放时使用。
本发明实施例提供的流媒体数据传送方法,还包括:检查缓存的待播放数据的完整性,并获取缺失数据的过程。如图7所示,具体包括下列步骤:
S400:开始。
S401:检查缓存的数据是否连续,即检查数据是否完整。
数据完整性的检查是根据预先设定的时间间隔周期性进行的。具体为:检查缓存的数据的数据帧号是否连续,若是,则认为数据是完整的;若否,则认为有缺失的数据帧。
当检查认为数据是完整的情况下,则在预设的时间间隔后返回步骤S400,重新启动数据完整性检查流程,继续进行数据完整性的检查。
当确定有缺失的数据帧时,执行步骤S402。
S402:根据缺失的数据帧号,确定缺失的数据帧所属的数据帧类别,查找到负责提供该数据帧的上游节点,向其请求该缺失的数据帧。
S403:是否在规定时间段内接收到该上游节点返回的该缺失的数据帧。
若是,执行步骤S406;若否,执行步骤S404。
S404:随机选择一个其它上游节点,向其请求该缺失的数据帧。
S405:是否在规定时间段内接收到其它上游节点返回的该缺失的数据帧。
若是,执行步骤S406;若否,执行步骤S407。
S406:缓存接收到的该缺失的数据帧。
即将接收到的该缺失的数据帧存入缓存区。
S407:停止请求该缺失的数据帧。
且当播放到该缺失的数据帧时跳过该帧,继续播放下一帧。
特别的,当发现有缺失的数据帧时也可以不确定负责提供该缺失的数据帧的上游节点,直接随机选择一个上游节点获取该缺失的帧数据即可。
根据本发明的上述方法,可以构建一种网络节点,如图8所示,包括:第一确定模块101、第二确定模块102、通知模块103和数据接收模块104。
第一确定模块101,用于确定与本节点建立端对端P2P连接的上游节点。
第一确定模块101,还用于:周期性获取P2P网络中的在线节点列表;以及当本节点与新的在线节点建立连接或与已建立连接的上游节点之间的连接断开时,重新确定与本节点建立连接的上游节点。
第二确定模块102,用于确定各上游节点需要提供的数据帧对应的数据帧类别信息。
较佳的,第二确定模块102,进一步可以包括:第一确定单元1021和/或第二确定单元1022。
第一确定单元1021,用于将根据设定的数据帧分类规则划分出的X个数据帧类别分配给确定出的上游节点,得到每个上游节点需要提供的数据帧对应的数据帧类别信息。
第二确定单元1022,用于将根据选择的数据帧分类规则划分出的X个数据帧类别分配给确定出的上游节点,得到每个上游节点需要提供的数据帧对应的数据帧类别信息。
通知模块103,用于将第二确定模块102确定出的数据帧类别信息后分别通知给各上游节点。
通知模块103,具体用于:将第一确定单元1021数据帧类别信息通知所述上游节点;或将第二确定单元1022数据帧类别信息和所选择的数据帧分类规则通知上游节点。
数据接收模块104,用于接收各上游节根据所述数据帧类别信息点返回的对应类别的数据帧。
数据接收模块104,还用于:将接收到的数据帧号大于本节点的当前播放数据帧号的数据帧进行缓存。
本发明实施例提供的网络节点,还包括:完整性检查模块105,用于检查缓存的数据帧的帧号是否连续,若否,则确定不连续的数据帧号对应的数据帧为缺失的数据帧,并向上游节点请求所述缺失的数据帧。
数据接收模块104,还用于接收并缓存上游节点返回的缺失的数据帧。
本发明实施例提供的网络节点,还包括:类别确定及发送模块106,用于根据设定的数据帧分类规则,确定本地缓存的数据帧所属的数据帧类别,并接收其他节点发送的数据帧类别信息,向其他节点返回对应类别的数据帧;或用于接收其他节点发送的数据帧分类规则和数据帧类别信息,根据接收的数据帧分类规则确定本地缓存的数据帧所属的数据帧类别,并根据接收的其他节点发送的数据帧类别信息向其他节点返回对应类别的数据帧。
本发明实施例提供的流媒体数据帧传送方法及装置,根据确定与本节点建立P2P连接的上游节点;确定上游节点需要提供的数据帧类别信息,并通知上游节点;不仅充分利用了P2P网络的流媒体传送优点,且由于数据的传送不是以现有技术的秒级为单位,而是以数据帧为单位,不需要等上游节点缓存了一秒钟内的全部数据后才能获取这一秒内的数据;也不需要等到一秒钟内的数据齐全后再传给其他节点,显著提高数据传输的效率,降低了数据传输时延。
以数据帧为单位进行数据帧分类获取,减小了数据调度的粒度,实现了精细粒度的数据调度;在数据缺失时,只需重传缺失的数据帧,而不必再重传一秒内的所有数据,节省了网络带宽资源。
本节点确定所述上游节点需要提供的数据帧类别信息,并通知所述上游节点;以及接收所述上游节点返回的相应类别的数据帧。避免了针对要获取的每个数据帧频繁发送数据获取请求,上游节点在拥有相应类别的数据帧时,即可主动推送给发送数据获取请求的节点,有效的提高了可靠性和服务的效率,节约了网络资源。
通过对缓存的数据进行完整性检查,减少数据帧缺失的可能性,较好的保证了播放的连续性。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化、替换或应用到其他类似的装置,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。
Claims (15)
1.一种流媒体数据传送方法,其特征在于,包括:
确定与本节点建立端对端P2P连接的上游节点;
确定所述上游节点需要提供的数据帧对应的数据帧类别信息,具体包括:将根据设定的数据帧分类规则划分出的X个数据帧类别分配给所述上游节点,得到每个上游节点需要提供的数据帧对应的数据帧类别信息;
将所述数据帧类别信息通知所述上游节点;
接收所述上游节点根据所述设定的数据帧分类规则,确定本地缓存的数据帧所属的数据帧类别,并根据接收到的所述数据帧类别信息返回的对应类别的数据帧。
2.如权利要求1所述的方法,其特征在于,所述确定与本节点建立点对点P2P连接的上游节点之后,还包括:
周期性获取P2P网络中的在线节点列表,所述本节点从所述在线节点列表中选择在线节点请求建立连接;
当本节点与新的在线节点建立连接,或与已建立连接的上游节点之间的连接断开时,重新确定与本节点建立连接的上游节点。
3.如权利要求1所述的方法,其特征在于,所述设定的数据帧分类规则包括:
根据对数据帧号进行模X运算的结果,将数据帧划分为X个数据帧类别;或
根据数据帧号的末位数字特征,将数据帧划分为X个数据帧类别。
4.如权利要求1所述的方法,其特征在于,所述接收所述上游节点根据所述设定的数据帧分类规则,确定本地缓存的数据帧所属的数据帧类别,并根据接收到的所述数据帧类别信息返回的对应类别的数据帧后,还包括:
将接收到的数据帧号大于本节点的当前播放数据帧号的数据帧进行缓存。
5.如权利要求4所述的方法,其特征在于,还包括:检查缓存的数据帧的帧号是否连续,若否,则确定不连续的数据帧号对应的数据帧为缺失的数据帧,并向所述上游节点请求所述缺失的数据帧。
6.一种流媒体数据传送方法,其特征在于,包括:
确定与本节点建立端对端P2P连接的上游节点;
确定所述上游节点需要提供的数据帧对应的数据帧类别信息,具体包括:将根据选择的数据帧分类规则划分出的X个数据帧类别分配给所述上游节点,得到每个上游节点需要提供的数据帧对应的数据帧类别信息;
将所述选择的数据帧分类规则和所述数据帧类别信息通知所述上游节点;
接收所述上游节点根据接收到的所述选择的数据帧分类规则,确定本地缓存的数据帧所属的数据帧类别,并根据接收到的所述数据帧类别信息返回的对应类别的数据帧。
7.如权利要求6所述的方法,其特征在于,所述确定与本节点建立点对点P2P连接的上游节点之后,还包括:
周期性获取P2P网络中的在线节点列表,所述本节点从所述在线节点列表中选择在线节点请求建立连接;
当本节点与新的在线节点建立连接,或与已建立连接的上游节点之间的连接断开时,重新确定与本节点建立连接的上游节点。
8.如权利要求6所述的方法,其特征在于,所述选择的数据帧分类规则包括:
根据对数据帧号进行模X运算的结果,将数据帧划分为X个数据帧类别;或
根据数据帧号的末位数字特征,将数据帧划分为X个数据帧类别。
9.如权利要求6所述的方法,其特征在于,所述接收所述上游节点根据接收到的所述选择的数据帧分类规则,确定本地缓存的数据帧所属的数据帧类别,并根据接收到的所述数据帧类别信息返回的对应类别的数据帧后,还包括:
将接收到的数据帧号大于本节点的当前播放数据帧号的数据帧进行缓存。
10.如权利要求9所述的方法,其特征在于,还包括:检查缓存的数据帧的帧号是否连续,若否,则确定不连续的数据帧号对应的数据帧为缺失的数据帧,并向所述上游节点请求所述缺失的数据帧。
11.一种网络节点,其特征在于,包括:第一确定模块、第二确定模块、通知模块和数据接收模块;
所述第一确定模块,用于确定与本节点建立端对端P2P连接的上游节点;
所述第二确定模块,用于确定所述上游节点需要提供的数据帧对应的数据帧类别信息;具体用于将根据设定的或选择的数据帧分类规则划分出的X个数据帧类别分配给所述上游节点,得到每个上游节点需要提供的数据帧对应的数据帧类别信息;
所述通知模块,用于将所述数据帧类别信息通知所述上游节点;或将所述数据帧类别信息和所述选择的数据帧分类规则通知所述上游节点;
所述数据接收模块,用于接收所述上游节点根据所述数据帧类别信息返回的对应类别的数据帧;所述上游节点返回的对应类别的数据帧是根据所述设定的数据帧分类规则,确定本地缓存的数据帧所属的数据帧类别,并根据接收到的所述数据帧类别信息返回的;或所述上游节点返回的对应类别的数据帧是根据接收到的所述选择的数据帧分类规则,确定本地缓存的数据帧所属的数据帧类别,并根据接收到的所述数据帧类别信息返回的。
12.如权利要求11所述的网络节点,其特征在于,所述第一确定模块,还用于:
周期性获取P2P网络中的在线节点列表,所述本节点从所述在线节点列表中选择在线节点请求建立连接;以及当本节点与新的在线节点建立连接或与已建立连接的上游节点之间的连接断开时,重新确定与本节点建立连接的上游节点。
13.如权利要求11所述的网络节点,其特征在于,所述数据接收模块,还用于:
将接收到的数据帧号大于本节点的当前播放数据帧号的数据帧进行缓存。
14.如权利要求13所述的网络节点,其特征在于,还包括:
完整性检查模块,用于检查缓存的数据帧的帧号是否连续,若否,则确定不连续的数据帧号对应的数据帧为缺失的数据帧,并向所述上游节点请求所述缺失的数据帧;
所述数据接收模块,还用于接收并缓存所述上游节点返回的所述缺失的数据帧。
15.如权利要求14所述的网络节点,其特征在于,还包括:
类别确定及发送模块,用于根据设定的数据帧分类规则,确定本地缓存的数据帧所属的数据帧类别,并接收其他节点发送的数据帧类别信息,向所述其他节点返回对应类别的数据帧;或
用于接收其他节点发送的数据帧分类规则和数据帧类别信息,根据接收的数据帧分类规则确定本地缓存的数据帧所属的数据帧类别,并根据接收的所述数据帧类别信息向所述其他节点返回对应类别的数据帧。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008102227832A CN101365000B (zh) | 2008-09-24 | 2008-09-24 | 一种流媒体数据传送方法及网络节点 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008102227832A CN101365000B (zh) | 2008-09-24 | 2008-09-24 | 一种流媒体数据传送方法及网络节点 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101365000A CN101365000A (zh) | 2009-02-11 |
CN101365000B true CN101365000B (zh) | 2012-06-27 |
Family
ID=40391147
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008102227832A Active CN101365000B (zh) | 2008-09-24 | 2008-09-24 | 一种流媒体数据传送方法及网络节点 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101365000B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102307216B (zh) * | 2011-03-15 | 2013-10-09 | 陈建国 | 多媒体电话p2p流媒体广播方法及系统 |
CN103294726A (zh) * | 2012-03-05 | 2013-09-11 | 日电(中国)有限公司 | 用于处理视频文件的方法和设备 |
CN107707519A (zh) * | 2017-07-10 | 2018-02-16 | 贵州白山云科技有限公司 | 一种流媒体传输方法、装置和系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1744500A (zh) * | 2004-09-03 | 2006-03-08 | 微软公司 | 用于可缩放媒体的分布式流传送的系统和方法 |
CN1852108A (zh) * | 2005-12-08 | 2006-10-25 | 华为技术有限公司 | 一种多点下载的方法 |
CN1852099A (zh) * | 2005-07-11 | 2006-10-25 | 华为技术有限公司 | 一种终端下载共享数据的方法及系统 |
CN1859106A (zh) * | 2005-10-28 | 2006-11-08 | 华为技术有限公司 | 多点下载中保证数据块在整个系统均匀分布的方法和装置 |
CN1969528A (zh) * | 2004-07-30 | 2007-05-23 | 诺基亚公司 | 用于点对多点传输系统的点对点修复响应机制 |
-
2008
- 2008-09-24 CN CN2008102227832A patent/CN101365000B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1969528A (zh) * | 2004-07-30 | 2007-05-23 | 诺基亚公司 | 用于点对多点传输系统的点对点修复响应机制 |
CN1744500A (zh) * | 2004-09-03 | 2006-03-08 | 微软公司 | 用于可缩放媒体的分布式流传送的系统和方法 |
CN1852099A (zh) * | 2005-07-11 | 2006-10-25 | 华为技术有限公司 | 一种终端下载共享数据的方法及系统 |
CN1859106A (zh) * | 2005-10-28 | 2006-11-08 | 华为技术有限公司 | 多点下载中保证数据块在整个系统均匀分布的方法和装置 |
CN1852108A (zh) * | 2005-12-08 | 2006-10-25 | 华为技术有限公司 | 一种多点下载的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101365000A (zh) | 2009-02-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100558042C (zh) | 一种基于超级节点的p2p直播方法 | |
US8650301B2 (en) | Adaptive data rate streaming in a peer-to-peer network delivering video content | |
CN101150465B (zh) | 一种获取种子信息的方法及p2p网络中的超级节点和普通节点 | |
CN102065150B (zh) | 一种基于p2p网络和cdn网络的数据传输系统和方法 | |
CN101960792B (zh) | 用于多传输方式架构的缓冲器控制的方法、设备和系统 | |
CN101296152B (zh) | 对等连接网络的数据调度方法和系统 | |
JP2003501881A (ja) | マルチキャストする方法および装置 | |
WO2009015549A1 (fr) | Système à mémoire cache partagée, son procédé de mise en œuvre et son logiciel de mise en œuvre | |
CN101237429A (zh) | 基于内容分发网络的流媒体直播系统、方法及装置 | |
US20120166556A1 (en) | Method, device and system for real-time publish subscribe discovery based on distributed hash table | |
CN101365000B (zh) | 一种流媒体数据传送方法及网络节点 | |
CN101742238A (zh) | 一种rtsp和p2p相结合的流媒体点播方法及装置 | |
CN101304381A (zh) | P2p网络中文件传输的方法、系统及装置 | |
CN104427354A (zh) | 一种直播媒体共享的方法、流媒体服务器及节点子系统 | |
CN103281382A (zh) | 一种基于p2p的文件传输方法和节点 | |
CN102769666A (zh) | 一种云存储方法及云存储系统 | |
CN100530161C (zh) | 提供端口的动态专用的处理器间通信网络 | |
CN102111608A (zh) | 一种视频监控系统的通信方法及其设备 | |
CN108833554B (zh) | 一种面向大规模网络的实时高可靠消息分发系统及其方法 | |
CN101132390A (zh) | 基于p2p技术的流媒体系统 | |
JP2009080642A (ja) | 負荷制御方法及び装置及びプログラム | |
JP2005252596A (ja) | 物理的信頼度を用いたp2pネットワーク構成方法及び接続状態管理装置 | |
CN103701885A (zh) | P2p系统中查询索引的方法、p2p服务器以及p2p服务器系统 | |
CN101453392B (zh) | 分布式服务器架构 | |
CN104660656A (zh) | 一种p2p连接方法、服务器、终端以及一种通信系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |