CN101815077A - 一种p2p流媒体直播中数据传输的方法和*** - Google Patents
一种p2p流媒体直播中数据传输的方法和*** Download PDFInfo
- Publication number
- CN101815077A CN101815077A CN200910009171A CN200910009171A CN101815077A CN 101815077 A CN101815077 A CN 101815077A CN 200910009171 A CN200910009171 A CN 200910009171A CN 200910009171 A CN200910009171 A CN 200910009171A CN 101815077 A CN101815077 A CN 101815077A
- Authority
- CN
- China
- Prior art keywords
- video
- sub
- node
- piece
- data
- 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.)
- Granted
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提出一种P2P流媒体直播中数据传输方法和***。包括以下步骤:将视频数据划分成视频子块,分配给发送方节点进行传输;由发送方节点将获取的所述视频子块发送给接收方节点,并定位缺失的所述视频子块;计算到候选节点的路由,所述候选节点包括所述缺失的视频子块;接收所述发送方节点发送的所述视频子块,根据所述路由信息选择子节点最少的所述候选节点进行连接,并预定所述缺失的视频子块;当所述候选节点接收到所述缺失的视频子块后,将所述视频子块传输给所述接收方节点。本发明降低终端用户观看视频的延迟,改善了直播***的实时性,并有效降低了***的控制开销,大幅提高***的吞吐量。
Description
技术领域
本发明涉及网络流媒体领域,尤其涉及一种P2P流媒体直播中数据传输的方法和***。
背景技术
随着互联网的发展,利用网络进行流媒体播放成为一个热点。流媒体是指在Internet/Intranet上使用流式传输技术的多媒体,流媒体在播放前不需要下载整个文件,可以边下载边观看。其原理是把向用户传输的多媒体文件按照播出时间顺序分为不同的片断,然后依次把这些片断发给用户,连续播放这些片断就形成了连续的声音和图像。
传统的网络流媒体播放***一般基于C/S模式。但是,由于流媒体播放需要消耗大量的网络带宽和服务器资源,因此,这种模式严重限制了网络流媒体业务的发展。以一个占用带宽为300kbps的网络视频流为例,当有1000个用户同时观看时,需要的带宽是300Mbps。这样的性能要求对于大多数服务器来说是满足不了的。如果要支持几万甚至几十万的用户,采用这种C/S模式几乎是不可能的。当然,增加服务器数量和提高带宽是一个解决方式,但是这种方式需要巨大的成本开支,所以我们需要通过新的技术手段解决这个问题。
IP组播是解决网络流媒体多路传输消耗大量带宽的一种技术。利用组播可以将一份数据同时发送给一组特定的用户,从而避免了数据的重复发送,不会造成网络带宽的浪费,非常适合网络流媒体传输。但是,IP组播也具有自身的问题。因为Internet是个异构网络,硬件平台千差万别,互连设备在对组播的支持上也存在差异,因此,IP组播在实际应用中存在部署的困难。
对等网络是最近几年新兴的网络技术,相对于传统的C/S模式,P2P模式一个非常显著的特点就是节点无需依赖集中式服务器资源,各节点可以直接进行通信。每个节点具有相同的地位,既可以请求服务,也可以提供服务,同时扮演着C/S模式中服务器和客户机的双重角色,甚至还可以具有路由器和高速缓存的功能。在P2P模式下,由于每个节点都具有客户机和服务器的功能。这样每个节点在从别的节点接收数据流的同时还向其他节点发送数据流。利用这个特点,P2P网络技术可以应用现有的计算资源和有限网络带宽实现大规模网络流媒体直播。
在P2P流媒体***中Peer节点如何获取数据以及该Peer节点如何提供数据服务,是决定***性能的关键问题,本质上是Peer节点的数据传输方法问题。在已有研究中大多数的工作是采用拉模式,由Peer节点向自己父节点申请数据,由父节点将数据传输给子节点。当父节点能力不足时,将会将子节点的数据请求转发给其他节点或是节目源。在这种策略中,节点B从节点A处获取一个数据包p需要经过下面3个步骤:(1)A发送位图信息给B,声明数据包p存在自己的缓存中;(2)如果B需要数据包p,则请求A给自己发送数据包p;(3)A接收到请求后,将p发送给B。可见,一个数据包的传递至少需要节点A和B进行3次通信。
另外,考虑到效率问题,节点并不针对每个数据包发送位图信息和请求,而是将一组数据包的信息合并起来发送,这样数据包在节点之间传递的平均时间延迟被进一步增大。节点还需要周期性地向邻居节点发送位图信息和请求,使得网络流量中控制信息的比重较高,导致***的控制开销增大。这种情况在包括远程教学、视频直播等在内的很多对实时性要求较高的应用中是非常不利的,降低了***的服务质量和用户感受,使***吞吐量受到限制。同时这种单流的方法对节点的动态性非常敏感,当父节点离开时,子节点的数据传输受到很大的影响,***会出现较长时间的中断恢复过程。
发明内容
本发明提供一种P2P流媒体直播中数据传输方法和***,降低终端用户观看视频的延迟,改善了直播***的实时性,并有效降低了***的控制开销,大幅提高***的吞吐量。
根据本发明一方面,提出一种P2P直播中数据传输的方法,包括以下步骤:将视频数据划分成视频子块,分配给发送方节点进行传输;由发送方节点将获取的所述视频子块发送给接收方节点,并定位缺失的所述视频子块;计算到候选节点的路由,所述候选节点包括所述缺失的视频子块;接收所述发送方节点发送的所述视频子块,根据所述路由信息选择子节点最少的所述候选节点进行连接,并预定所述缺失的视频子块;当所述候选节点接收到所述缺失的视频子块后,将所述视频子块传输给所述接收方节点。
根据本发明另一方面,还提出一种P2P直播中数据传输的***,包括:划分单元,将视频数据划分成视频子块,分配给发送方节点进行传输;定位单元,设置于发送方节点,将获取的所述视频子块发送给接收方节点,并定位缺失的所述视频子块;计算单元,设置于发送方节点,计算到候选节点的路由,所述候选节点包括所述缺失的视频子块;接收单元,设置于接收方节点,用于接收发送方节点发送的视频子块;选择单元,设置于接收方节点,对于所述缺失的视频子块,根据所述路由信息选择子节点最少的所述候选节点进行连接,并预定所述缺失的视频子块;传输单元,设置于所述候选节点,当接收到所述缺失的视频子块后,将所述视频子块传输给所述接收方节点,由接收方节点的接收单元进行接收。
与现有技术相比,本发明具有至少如下之一的优点:
采用推拉结合的数据传输方式,降低***的控制开销,节点获取数据的延时,改善了直播***的实时性,提高了***吞吐量,改善流媒体***的用户感受。
良好的自适应性,节点根据数据传输的情况,实时更新数据传输节点的选择,提高***对网络拥塞情况的防范能力。
采用多源多径的数据分发方式,有效克服节点动态性对***的影响,提高视频回放质量。
节点间采用轻量级GOSSIP协议,支持推机制,把节点管理和流媒体数据的传输分开进行,根据数据传送的流向来分发流媒体数据,使结构更加简洁。
附图说明
图1为本发明P2P流媒体直播中数据传输的方法流程图。
图2为本发明媒体流子流的划分示意图。
图3为本发明节点的缓存结构示意图。
图4为本发明P2P流媒体直播中数据传输的***结构图。
图5为本发明P2P流媒体直播中数据传输的另一***结构图。
图6为本发明P2P流媒体直播中数据传输的另一***结构图。
具体实施方式
图1示出本发明P2P流媒体直播中数据传输的方法流程图。
在步骤101,将视频数据划分成视频子块,分配给发送方节点进行传输。
将视频数据划分成N个等长的视频子块,比如将视频数据按照固定的时间长度划分成N个等长的视频子块,这些子块作为数据传输的基本单位。比如每个子块长度为8K,视频长度为400M,整个视频划分成50,000个子块。对子块依次编号为0,1,2...N。
还可以进一步把子块划分成子流后传输,图2中为该划分示意图。将子块编号对较小整数K(比如5,6,7,8)做取模运算,所有余数相同的分块将属于同一个子流。不同子流独立传输,不互相影响。属于同一子流的数据将从同一节点获取,直到该节点失效或节点性能不满足带宽要求。这里约定,第i(0<=i<K)个子流指所有编号对K取模余数为i的视频子块组成的集合。
在步骤102,由发送方节点将获取的所述视频子块发送给接收方节点,并定位缺失的所述视频子块。
用一个缓存映射BM(buffermap)来表示节点中是否拥有某个片断的数据。假设每个片断代表T秒的数据,用一个滑动窗口(Sliding window)来代表BM,大小为L个片断,BM中用L个比特来记录,每个比特代表一个数据片断,值为1表示有这个片断,0表示没有。定位缺失的最小分块编号p,并顺次检查p+1,p+2,p+3...p+K-1。
由于P2P是一个半同步的***,不同节点的滑动窗口代表的并不是完全一样的数据,用2个字节记录滑动窗口中第一个片断的序列号。
在步骤103,计算到候选节点的路由,所述候选节点包括所述缺失的视频子块。
根据缺失片段号计算出路由,该路由包含一组可用节点的信息,对于这些节点,根据稀有优先的原则分配给K个数据块,每次为每个数据块至少选择4个候选节点。
在步骤104,接收发送方节点发送的视频子块,根据所述路由信息,选择子节点最少的所述候选节点进行连接,并预定所述缺失的视频子块。
采用多源多径的数据分发方式,优先选择子节点最少的节点进行连接尝试,可以有效的减小节点动态性对***的影响,提高视频回放质量。为了保证每个子块或子流有一定的候选节点,还检测所述候选节点的个数,当某个数据分块的候选节点个数小于设定的阈值时,请求新的路由信息。
在步骤105,当所述候选节点接收到所述缺失的视频子块后,将所述视频子块传输给所述接收方节点。对于设定的滑动窗口,可以在被预定的分块在本地滑动窗口未滑动的截止时间前到达后,按照预定将数据块推送给预定的接收方节点。
本发明采用推拉结合的数据传输方式,降低***的控制开销,节点获取数据的延时,改善了直播***的实时性,提高了***吞吐量,改善流媒体***的用户感受。
此外,在传输视频子块的过程中,还可以包括以下操作:监测所述视频数据的传输速率,当所述传输速率不满足阈值要求时,从所述候选节点中重新选择并进行切换,删除当前进行数据传输的节点。本发明具有良好的自适应性,节点根据数据传输的情况,实时更新数据传输节点的选择,提高***对网络拥塞情况的防范能力。
当接收方节点接收到所述视频数据后,还要判断是否已全部接收到视频数据。因为数据分块不一定是顺序到达的,所以不能简单的根据编号大小判断数据分块是否缺失,而是采用滑动窗口原则,设滑动窗口为W,当前接收到的本系列(同余系)最大的分块编号是M,则编号小于M-W的未到达分块将被判定为丢失。接收方节点对于缺失的数据分块,采用“拉”的方式获取。拉的时候,首先从本分块的候选节点中进行选择,然后从其他分块的候选节点中查找,最后才会向源节点发送请求。
在接收方节点接收到视频数据后,按照子流序号和子块序号进行同步存储,待子流填满滑动窗口后,将其放入服务缓存中。服务缓存既为本节点提供播放服务,也为其子节点提供数据服务。图3为本发明节点的缓存结构示意图。
图4为本发明P2P流媒体直播中数据传输的***结构图。
划分单元11将视频数据划分成视频子块,分配给发送方节点进行传输。
将视频数据划分成N个等长的视频子块,比如将视频数据按照固定的时间长度划分成N个等长的视频子块,这些子块作为数据传输的基本单位。比如每个子块长度为8K,视频长度为400M,整个视频划分成50,000个子块。对子块依次编号为0,1,2...N。
还可以进一步把子块划分成子流后传输,图2中为该划分示意图。将子块编号对较小整数K(比如5,6,7,8)做取模运算,所有余数相同的分块将属于同一个子流。不同子流独立传输,不互相影响。属于同一子流的数据将从同一节点获取,直到该节点失效或节点性能不满足带宽要求。这里约定,第i(0<=i<K)个子流指所有编号对K取模余数为i的视频子块组成的集合。
定位单元12设置于发送方节点,将获取的所述视频子块发送给接收方节点,并定位缺失的所述视频子块。
用一个缓存映射BM(buffermap)来表示节点中是否拥有某个片断的数据。假设每个片断代表T秒的数据,用一个滑动窗口(Sliding window)来代表BM,大小为L个片断,BM中用L个比特来记录,每个比特代表一个数据片断,值为1表示有这个片断,0表示没有。定位缺失的最小分块编号p,并顺次检查p+1,p+2,p+3...p+K-1。
由于P2P是一个半同步的***,不同节点的滑动窗口代表的并不是完全一样的数据,用2个字节记录滑动窗口中第一个片断的序列号。
计算单元13设置于发送方节点,计算到候选节点的路由,所述候选节点包括所述缺失的视频子块。
根据缺失片段号计算出路由,该路由包含一组可用节点的信息,对于这些节点,根据稀有优先的原则分配给K个数据块,每次为每个数据块至少选择4个候选节点。
接收单元14设置于接收方节点,用于接收发送方节点发送的视频子块。
选择单元15设置于接收方节点,对于所述缺失的视频子块,根据所述路由信息选择子节点最少的所述候选节点进行连接,并预定所述缺失的视频子块。优先选择子节点最少的节点进行连接尝试,可以有效的减小节点动态性对***的影响。
传输单元16设置于所述候选节点,当接收到所述缺失的视频子块后,将所述视频子块传输给所述接收方节点,由接收方节点的接收单元进行接收。
图5为本发明P2P流媒体直播中数据传输的另一***结构图。在图4的基础上还包括检测单元17。
检测单元17可以设置在发送方节点,当然也可以设置在接收方节点,用于检测所述候选节点的个数。在所述候选节点的个数小于设定的阈值时,所述计算单元重新计算所述路由。
此外,所述检测单元17还监测所述视频数据的传输速率。在所述传输速率不满足阈值要求时,所述选择单元还从所述候选节点中重新选择并进行切换,删除当前进行数据传输的节点。本发明具有良好的自适应性,节点根据数据传输的情况,实时更新数据传输节点的选择,提高***对网络拥塞情况的防范能力。
图6为本发明P2P流媒体直播中数据传输的另一***结构图。还包括缓存单元18,设置在接收方节点,用于缓存接收到的所述视频数据。
当接收方节点接收到所述视频数据后,还要判断是否已全部接收到视频数据。因为数据分块不一定是顺序到达的,所以不能简单的根据编号大小判断数据分块是否缺失,而是采用滑动窗口原则,设滑动窗口为W,当前接收到的本系列(同余系)最大的分块编号是M,则编号小于M-W的未到达分块将被判定为丢失。接收方节点对于缺失的数据分块,采用“拉”的方式获取。拉的时候,首先从本分块的候选节点中进行选择,然后从其他分块的候选节点中查找,最后才会向源节点发送请求。
所述缓存包括同步缓存和服务缓存。在接收方节点接收到视频数据后,按照子流序号和子块序号进行同步存储,待子流填满滑动窗口后,将其放入服务缓存中。服务缓存既为本节点提供播放服务,也为其子节点提供数据服务。
上述实施方式以及实施例只是用于说明本发明,不应理解为对本发明的限制,据此作出的相应变形和修改,都应覆盖在本权利要求的保护范围之内。
Claims (10)
1.一种P2P直播中数据传输的方法,包括以下步骤:
将视频数据划分成视频子块,分配给发送方节点进行传输;
由发送方节点将获取的所述视频子块发送给接收方节点,并定位缺失的所述视频子块;
计算到候选节点的路由,所述候选节点包括所述缺失的视频子块;
接收所述发送方节点发送的所述视频子块,根据所述路由信息选择子节点最少的所述候选节点进行连接,并预定所述缺失的视频子块;
当所述候选节点接收到所述缺失的视频子块后,将所述视频子块传输给所述接收方节点。
2.如权利要求1所述数据传输方法,其中,计算到候选节点的路由的操作,还包括以下步骤:
检测所述候选节点的个数,当所述个数小于设定的阈值时,重新计算所述路由。
3.如权利要求1所述数据传输方法,其中,将所述视频子块传输给所述节点的操作,还包括以下步骤:
监测所述视频数据的传输速率,当所述传输速率不满足阈值要求时,从所述候选节点中重新选择并进行切换。
4.如权利要求1所述数据传输方法,其中,将所述视频子块传输给所述接收方节点后,还包括以下步骤:缓存接收到的所述视频数据。
5.一种P2P直播中数据传输的***,包括:
划分单元,将视频数据划分成视频子块,分配给发送方节点进行传输;
定位单元,设置于发送方节点,将获取的所述视频子块发送给接收方节点,并定位缺失的所述视频子块;
计算单元,设置于发送方节点,计算到候选节点的路由,所述候选节点包括所述缺失的视频子块;
接收单元,设置于接收方节点,用于接收发送方节点发送的视频子块;
选择单元,设置于接收方节点,对于所述缺失的视频子块,根据所述路由信息选择子节点最少的所述候选节点进行连接,并预定所述缺失的视频子块;
传输单元,设置于所述候选节点,当接收到所述缺失的视频子块后,将所述视频子块传输给所述接收方节点,由接收方节点的接收单元进行接收。
6.如权利要求5所述数据传输***,还包括:检测单元,检测所述候选节点的个数。
7.如权利要求6所述数据传输***,其中,所述计算单元在所述候选节点的个数小于设定的阈值时,重新计算所述路由。
8.如权利要求6所述数据传输***,其中,所述检测单元还监测所述视频数据的传输速率。
9.如权利要求8所述数据传输***,其中,所述选择单元还在所述传输速率不满足阈值要求时,从所述候选节点中重新选择并进行切换。
10.如权利要求8所述数据传输***,还包括缓存单元:缓存接收到的所述视频数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910009171XA CN101815077B (zh) | 2009-02-20 | 2009-02-20 | 一种p2p流媒体直播中数据传输的方法和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910009171XA CN101815077B (zh) | 2009-02-20 | 2009-02-20 | 一种p2p流媒体直播中数据传输的方法和*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101815077A true CN101815077A (zh) | 2010-08-25 |
CN101815077B CN101815077B (zh) | 2013-01-23 |
Family
ID=42622192
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910009171XA Active CN101815077B (zh) | 2009-02-20 | 2009-02-20 | 一种p2p流媒体直播中数据传输的方法和*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101815077B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104901783A (zh) * | 2014-03-06 | 2015-09-09 | 携程计算机技术(上海)有限公司 | 数据传输方法及服务器*** |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1937553B (zh) * | 2006-05-11 | 2010-05-12 | 蓝汛网络科技(北京)有限公司 | 基于流媒体数据帧的对等网络数据调度方法 |
CN101102312B (zh) * | 2007-06-11 | 2010-06-02 | 华为技术有限公司 | 一种网络通信数据处理方法、网络通信***及客户端 |
-
2009
- 2009-02-20 CN CN200910009171XA patent/CN101815077B/zh active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104901783A (zh) * | 2014-03-06 | 2015-09-09 | 携程计算机技术(上海)有限公司 | 数据传输方法及服务器*** |
CN104901783B (zh) * | 2014-03-06 | 2019-06-18 | 携程计算机技术(上海)有限公司 | 数据传输方法及服务器*** |
Also Published As
Publication number | Publication date |
---|---|
CN101815077B (zh) | 2013-01-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Picconi et al. | Is there a future for mesh-based live video streaming? | |
Gkantsidis et al. | Network coding for large scale content distribution | |
CN101102312B (zh) | 一种网络通信数据处理方法、网络通信***及客户端 | |
CN107223325B (zh) | 用于数字内容的自适应虚拟广播的方法和*** | |
Haßlinger et al. | Content delivery and caching from a network provider’s perspective | |
Guo et al. | Scalable live video streaming to cooperative clients using time shifting and video patching | |
US20150215661A1 (en) | System And Method For Distributing Live Broadcast Content | |
US20140173056A1 (en) | System and method for distribution of data packets utilizing an intelligent distribution network | |
CN101282281A (zh) | 一种媒体分发***、装置及流媒体播放方法 | |
US8145778B2 (en) | Method and system for transitioning streamed digital video content between stream servers in a digital video network | |
Guo et al. | P2Cast: peer-to-peer patching for video on demand service | |
Goh et al. | A comparative study of tree-based and mesh-based overlay p2p media streaming | |
Clayman et al. | The future of media streaming systems: transferring video over new IP | |
CN101815077B (zh) | 一种p2p流媒体直播中数据传输的方法和*** | |
CN101291242B (zh) | Pim dm支持带宽预留建立组播表项的方法、***及设备 | |
Anandaraj et al. | An efficient framework for large scale multimedia content distribution in P2P network: I2NC | |
Choi et al. | TDM: time-driven mesh overlay network for peer-to-peer video-on-demand services | |
Yu et al. | P2PVR: A playback offset aware multicast tree for on-demand video streaming with vcr functions | |
Guo et al. | P cast: P2p patching scheme for vod service | |
Guo et al. | Research on the service guarantee strategy based on streaming media platform | |
Fujita | Resilient tree-based video streaming with a guaranteed latency | |
Chakareski et al. | Adaptive p2p video streaming via packet labeling | |
Esquivel et al. | Performance analysis of BitTorrent-like P2P networks for video streaming services at the chunk level | |
Saltarin et al. | P2P video streaming with inter-session network coding | |
Alekseev et al. | Evaluation of a topological distance algorithm for construction of a P2P multicast hybrid overlay tree |
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 |