直播流传输方法和装置
技术领域
本发明涉及互联网视频技术领域,尤其涉及一种直播流传输方法和装置。
背景技术
当前各大视频网站都在大力发展直播,业务范围非常广泛,用户需求也更加多样化。直播系统中用户观看体验是最为关键的因素,而“流畅率”则是衡量用户观看体验的重要指标。流畅率表征播放的流畅度,其根据应用场景不同可有不同的定义。例如,流畅率一般可以指所关注的播放总时长T减去期间发生卡顿(即播放停滞)的总时长Td所得的差与总时长T的比值。
不同于点播业务,由于具备极高的实时性和短时效,直播业务通常“会且只会”出现短时间请求骤增的情况,造成内容分发网络(CDN)服务器超负载而无法及时响应,使得客户端播放出现“卡顿”现象,导致流畅率下降。
目前解决该问题有几种方案。一种是为CDN扩容,加大带宽以保证质量。然而这种方案将闲置大量的服务器和带宽资源。例如直播系统中最高在线人数峰值可为平时最高在线人数的数百倍。然而出现峰值的概率较低,使用该方案却需为直播系统持续提供满足峰值的服务器和带宽。对于带宽成本占比较高的视频网站而言,这种方案所带来的冗余量过大的服务器和带宽同样难以承担。
另一种方案是使用点对点数据传输(即P2P)算法来减轻CDN负载,节省带宽。P2P算法,就是在观看该直播节目的客户端中,选择具有一定上传能力的客户端L1(数据提供方,或称为上传方),为其他客户端L2(数据接收方,或称为下载方)传送数据,从而使大量客户端L2减少向CDN请求数据,降低CDN负载及带宽压力。换言之,传统CDN模式中,所有客户端都直接从CDN节点获取直播数据,而这种方案采用“CDN+P2P”模式,根据传输算法的不同,客户端L2有一定比例的数据来自客户端L1,如图1所示。
这种“CDN+P2P”模式具体来说,就是先对直播流码率进行判断,在码率较低的情况下(例如标清直播流,码率约400~600bps),采用P2P模式(即客户端L2有一定比例的数据来自客户端L1),对于码率较高的情况下(例如高清或超清直播流,码率约1000bps以上),采用全CDN模式,如图2所示。
上述方案在码率相对较低的标清直播下利用P2P算法可节省约80%的服务器和带宽成本(即有总量约80%的直播流在终端之间互相传输),并有效提高了流畅率。然而,由于P2P算法针对高码率直播流不仅节省带宽成本较少,反而导致流畅率急剧下降,因此在高码率直播场景中只能放弃使用P2P模式,而采用CDN模式。因此,在高清直播频次增加或在线人数急剧增长时,这种方案仍然会选择几乎全部从CDN下载数据,原有直播系统出现较为严重的带宽负荷过高、CDN无法响应等问题,同样影响用户正常观看。
此外,当某一场直播同时存在多种清晰度的流,或同一直播流因需要必须实时调整码率时,支持单一低码率的P2P算法就更加无法使用,因此这种方案已逐步无法适用于码率多样化的直播业务需求。
发明内容
有鉴于此,本发明提出了一种直播流传输方法和装置,其根据直播流码率和客户端状态调整客户端传输策略,在节省服务器和带宽资源的同时保证了直播流畅度,克服了现有技术中的上述问题。
一方面,提出了一种直播流传输方法,该方法包括:获取客户端当前状态;基于所获取的客户端当前状态,统计处于卡顿状态的客户端数占客户端总数的比率;在所述比率超过第一阈值的情况下,获取直播流当前码率;以及在当前码率高于预定的码率阈值情况下,通知客户端调整传输策略以提高传输能力,并提高客户端从内容分发网络CDN服务器获取的直播流数据相对于以点对点数据传输P2P模式获取的直播流数据的比例。
在一个示例中,该方法还包括:在所述比率超过第二阈值且低于第一阈值的情况下,重新选择传输能力相对于其他客户端更强的客户端作为点对点数据传输中的数据提供方。
在一个示例中,该方法还包括:在所述比率超过第二阈值且低于第一阈值的情况下,为状态为卡顿的客户端分配更多的作为点对点数据传输P2P中的数据提供方的客户端。
在一个示例中,客户端当前状态包括:P2P上传、P2P下载和卡顿其中之一。
在一个示例中,所述客户端当前状态是客户端根据其当前传输方式、下载数据源、网络状况、与其他节点的连接状况及播放状况中的一个或多个来确定的。
另一方面,提出了一种直播流传输方法,该方法包括:发送客户端当前状态;接收基于所获取的客户端当前状态和直播流当前码率所生成的通知;以及在所述通知指示处于卡顿状态的客户端数占客户端总数的比率超过第一阈值,且当前码率高于预定的码率阈值情况下,调整客户端传输策略以提高传输能力,并提高客户端从内容分发网络CDN服务器获取的直播流数据相对于以点对点数据传输P2P模式获取的直播流数据的比例。
在一个示例中,客户端当前状态包括:P2P上传、P2P下载和卡顿其中之一。
在一个示例中,所述客户端当前状态是客户端根据其当前传输方式、下载数据源、网络状况、与其他节点的连接状况及播放状况中的一个或多个来确定的。
另一方面,提出了一种直播流传输装置,该装置包括:用于获取客户端当前状态的部件;用于基于所获取的客户端当前状态,统计处于卡顿状态的客户端数占客户端总数的比率的部件;用于在所述比率超过第一阈值的情况下,获取直播流当前码率的部件;以及用于在当前码率高于预定的码率阈值情况下,通知客户端调整传输策略以提高传输能力,并提高客户端从内容分发网络CDN服务器获取的直播流数据相对于以点对点数据传输P2P模式获取的直播流数据的比例的部件。
在一个示例中,该装置还包括:用于在所述比率超过第二阈值且低于第一阈值的情况下,重新选择传输能力相对于其他客户端更强的客户端作为点对点数据传输中的数据提供方的部件。
在一个示例中,该装置还包括:用于在所述比率超过第二阈值且低于第一阈值的情况下,为状态为卡顿的客户端分配更多的作为点对点数据传输P2P中的数据提供方的客户端的部件。
在一个示例中,客户端当前状态包括:P2P上传、P2P下载和卡顿其中之一。
在一个示例中,所述客户端当前状态是客户端根据其当前传输方式、下载数据源、网络状况、与其他节点的连接状况及播放状况中的一个或多个来确定的。
另一方面,提出了一种直播流传输装置,该装置包括:用于发送客户端当前状态的部件;用于接收基于所获取的客户端当前状态和直播流当前码率所生成的通知的部件;以及用于在所述通知指示处于卡顿状态的客户端数占客户端总数的比率超过第一阈值,且当前码率高于预定的码率阈值情况下,调整客户端传输策略以提高传输能力,并提高客户端从内容分发网络CDN服务器获取的直播流数据相对于以点对点数据传输P2P模式获取的直播流数据的比例的部件。
在一个示例中,客户端当前状态包括:P2P上传、P2P下载和卡顿其中之一。
在一个示例中,所述客户端当前状态是客户端根据其当前传输方式、下载数据源、网络状况、与其他节点的连接状况及播放状况中的一个或多个来确定的。
以上各方面是基于“CDN+P2P”的混合模式,但与现有技术不同的是,以上各方面并非简单地根据码率在CDN模式和P2P模式之间切换,也不是仅利用P2P模式进行单一的低码率直播流的传输。以上各方面根据客户端的当前状态和直播流的当前码率来调整客户端的传输策略,并且调整利用CDN模式和P2P模式的传输比例,使得既可以使用P2P算法减轻CDN负载,减少直播带宽压力,又能够适用多种码率的直播,保证直播流畅度。相对于现有方案,该实施例可以支持更多的码率,提供更好的播放体验,减轻CDN负载和带宽压力。直播开始时可以最大化地减轻服务器负载,保障用户流畅播放,而当某次直播流码率临时变化时,能快速调整参数、改变传输策略,在维持稳定播放的前提下继续节省带宽成本。
根据下面参考附图对示例性实施例的详细说明,本发明的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本发明的示例性实施例、特征和方面,并且用于解释本发明的原理。
图1示出了CDN+P2P模式的示意图。
图2示出了现有技术中直播流传输方法的流程图。
图3示出了根据本发明一实施例的直播流传输方法的流程图。
图4示出了根据本发明一实施例的直播流传输方法的流程图。
图5示出了根据本发明一实施例的直播流传输装置的结构框图。
图6示出了根据本发明一实施例的直播流传输装置的结构框图。
图7示出了根据本发明一实施例的直播流传输设备的结构框图。
具体实施方式
以下将参考附图详细说明本发明的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本发明,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本发明同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本发明的主旨。
实施例1
图3示出根据本发明一实施例的直播流传输方法的流程图。该是实施例可在服务器端执行。如图3所示,该方法主要包括:
步骤301,获取客户端当前状态;
步骤302,基于所获取的客户端当前状态,统计处于卡顿状态的客户端数占客户端总数的比率;
步骤303,在所述比率超过第一阈值的情况下,获取直播流当前码率;
步骤304,在当前码率高于预定的码率阈值情况下,通知客户端调整传输策略以提高传输能力,并提高客户端从内容分发网络CDN服务器获取的直播流数据相对于以点对点数据传输P2P模式获取的直播流数据的比例。
本实施例是基于“CDN+P2P”的混合模式,但与现有技术不同的是,本实施例并非简单地根据码率在CDN模式和P2P模式之间切换,也不是仅利用P2P模式进行单一的低码率直播流的传输。本实施例根据客户端的当前状态和直播流的当前码率来调整客户端的传输策略,并且调整利用CDN模式和P2P模式的传输比例,使得既可以使用P2P算法减轻CDN负载,减少直播带宽压力,又能够适用多种码率的直播,保证直播流畅度。相对于现有方案,该实施例可以支持更多的码率,提供更好的播放体验,减轻CDN负载和带宽压力。直播开始时可以最大化地减轻服务器负载,保障用户流畅播放,而当某次直播流码率临时变化时,能快速调整参数、改变传输策略,在维持稳定播放的前提下继续节省带宽成本。
在一个示例中,客户端当前状态可包括P2P上传、P2P下载和卡顿其中之一。其中P2P上传状态表示该客户端作为P2P传输中的数据提供方(例如图1中的客户端L1),P2P下载表示该客户端作为P2P传输中的数据接收方(例如图1中的客户端L2),卡顿表示该客户端当前播放发生卡顿。客户端当前状态可从各客户端获得,例如,各客户端可通过REP(report,报告)消息定期主动向服务器报告当前状态。
在一个示例中,客户端当前状态可以是客户端根据其当前传输方式(例如上传或下载)、下载数据源(例如L1客户端或CDN服务器)、网络状况(例如流畅或阻塞)、与其他节点的连接状况(例如连接多少节点及各节点是否活动)及播放状况(例如是否卡顿)等中的一个或多个来确定的。
可基于所获取的客户端当前状态,统计处于卡顿状态的客户端数占客户端总数的比率。在一个示例中,可预先根据需要设定针对该比率的第一阈值和第二阈值,例如第一阈值可为10%,即10%的客户端处于卡顿状态,第二阈值可为5%,即5%的客户端处于卡顿状态。
在处于卡顿状态的客户端数占客户端总数的比率超过10%(第一阈值)的情况下,可视为当前播放状况不佳。此时有可能直播流实际码率有较大提高,原有的P2P传输算法不再适用,导致用户下载了大量冗余数据,无法得到即将播放的有效数据。这种情况下,可获取直播流当前码率,如果当前码率超过了预定的码率阈值(例如超过1000bps,落入标清或超清直播流码率范围),则可根据获取到的码率调整调度策略,并通知客户端改变P2P传输策略。例如,可生成RES(Response,应答)消息来通知客户端调整传输策略以提高传输能力,并可改变调度策略(可由服务器端进行),以提高客户端从内容分发网络CDN服务器获取的直播流数据相对于以点对点数据传输P2P模式获取的直播流数据的比例(例如使原本从L1客户端下载数据的通道改为直接从CDN服务器下载数据)。当客户端收到该RES消息时,可修改当前客户端的传输策略,例如修改上传限制、下载限制、CDN与P2P下载比例等。通过以上修改,客户端可例如通过提高请求下载数据的频率、增加每次请求所获得的数量、连接更多的L1客户端节点等,来提高传输能力,以应对较高的直播流码率。本领域技术人员应理解,客户端的具体调整方式可根据需要来进行设计,而不限于以上所举的例子。此外,客户端的具体调整方式可由服务器规定并设置在RES消息中,也可由客户端自行设置,而RES消息仅通知客户端进行调整以及调整的趋势,本领域技术人员可根据需要来选择适当的方式。
在一个示例中,如果所获取的码率并未超出预定的码率阈值,换言之,卡顿比率高可能并非由于码率过高而导致,则可分析导致卡顿比率高的其他原因并进行适当处理。
在处于卡顿状态的客户端数占客户端总数的比率超过5%(第二阈值)且低于10%(第一阈值)的情况下,可视为当前播放状况可以接受,但仍可优化。在这种情况下,可以不对客户端传输策略进行调整。服务器可调整调度方案,例如可为状态为卡顿的客户端分配更多的作为点对点数据传输P2P中的数据提供方的客户端(即状态为P2P上传的客户端)。另一方面,还可可重新选择传输能力相对于其他客户端更强的客户端作为点对点数据传输P2P中的数据提供方,从而改善播放流畅率。
在一个示例中,在处于卡顿状态的客户端数占客户端总数的比率低于5%(第二阈值)的情况下,可视为当前播放状况良好,可不做任何调整。
实施例2
图4示出根据本发明一实施例的直播流传输方法的流程图。该是实施例可在客户端执行。与图3所示实施例相同的特征和术语的含义相似,此处为简明不再赘述。如图4所示,该方法主要包括:
步骤401,发送客户端当前状态;
步骤402,接收基于所获取的客户端当前状态和直播流当前码率所生成的通知;以及
步骤403,在所述通知指示处于卡顿状态的客户端数占客户端总数的比率超过第一阈值,且当前码率高于预定的码率阈值情况下,调整客户端传输策略以提高传输能力,并提高客户端从内容分发网络CDN服务器获取的直播流数据相对于以点对点数据传输P2P模式获取的直播流数据的比例。
在一个示例中,客户端可通过发送REP消息定期主动向服务器发送客户端当前状态。关于客户端当前状态的说明可参见实施例1。
所接收的通知可包含服务器基于客户端当前状态统计的处于卡顿状态的客户端数占客户端总数的比率。客户端可接收来自服务器的RES消息作为通知。在一个示例中,可预先根据需要设定针对该比率的第一阈值和第二阈值,例如第一阈值可为10%,即10%的客户端处于卡顿状态,第二阈值可为5%,即5%的客户端处于卡顿状态。
在所接收的通知指示处于卡顿状态的客户端数占客户端总数的比率超过10%(第一阈值),且当前码率超过了预定的码率阈值(例如超过1000bps,落入标清或超清直播流码率范围)的情况下,客户端可调整调度策略,并改变P2P传输策略。例如,客户端可调整传输策略以提高传输能力,并可改变调度策略(可在服务器端的命令下进行),以提高客户端从内容分发网络CDN服务器获取的直播流数据相对于以点对点数据传输P2P模式获取的直播流数据的比例(例如使原本从L1客户端下载数据的通道改为直接从CDN服务器下载数据)。客户端可根据通知来修改当前客户端的传输策略,例如修改上传限制、下载限制、CDN与P2P下载比例等。通过以上修改,客户端可例如通过提高请求下载数据的频率、增加每次请求所获得的数量、连接更多的L1客户端节点等,来提高传输能力,以应对较高的直播流码率。本领域技术人员应理解,客户端的具体调整方式可根据需要来进行设计,而不限于以上所举的例子。此外,客户端的具体调整方式可由服务器规定并设置在通知(RES消息)中,也可由客户端自行设置,而服务器仅通知客户端进行调整以及调整的趋势,本领域技术人员可根据需要来选择适当的方式。
在处于卡顿状态的客户端数占客户端总数低于10%(第一阈值)的情况下,可视为当前播放状况可以接受,但仍可优化。在这种情况下,客户端可以不对传输策略进行调整,而仅由服务器调整调度方案,例如可为状态为卡顿的客户端分配更多的作为点对点数据传输P2P中的数据提供方的客户端(即状态为P2P上传的客户端)。另一方面,服务器还可重新选择传输能力相对于其他客户端更强的客户端作为点对点数据传输P2P中的数据提供方,从而改善播放流畅率。
实施例3
图5示出根据本发明一实施例的直播流传输装置500的结构框图。与图3所示实施例相同的特征和术语的含义相似,此处为简明不再赘述。如图5所示,该装置主要包括:
状态获取部件501,用于获取客户端当前状态;
统计部件502,用于基于所获取的客户端当前状态,统计处于卡顿状态的客户端数占客户端总数的比率;
码率获取部件503,用于在所述比率超过第一阈值的情况下,获取直播流当前码率;以及
通知和调度部件504,用于在当前码率高于预定的码率阈值情况下,通知客户端调整传输策略以提高传输能力,并提高客户端从内容分发网络CDN服务器获取的直播流数据相对于以点对点数据传输P2P模式获取的直播流数据的比例的部件。
在一个示例中,该装置还包括:用于在所述比率超过第二阈值且低于第一阈值的情况下,重新选择传输能力相对于其他客户端更强的客户端作为点对点数据传输中的数据提供方的部件。
在一个示例中,该装置还包括:用于在所述比率超过第二阈值且低于第一阈值的情况下,为状态为卡顿的客户端分配更多的作为点对点数据传输P2P中的数据提供方的客户端的部件。
在一个示例中,客户端当前状态包括:P2P上传、P2P下载和卡顿其中之一。
在一个示例中,所述客户端当前状态是客户端根据其当前传输方式、下载数据源、网络状况、与其他节点的连接状况及播放状况中的一个或多个来确定的。
实施例4
图6示出根据本发明一实施例的直播流传输装置600的结构框图。与图3所示实施例相同的特征和术语的含义相似,此处为简明不再赘述。如图6所示,该装置主要包括:
发送部件601,用于发送客户端当前状态;
接收部件602,用于接收基于所获取的客户端当前状态和直播流当前码率所生成的通知的部件;以及
调整部件603,用于在所述通知指示处于卡顿状态的客户端数占客户端总数的比率超过第一阈值,且当前码率高于预定的码率阈值情况下,调整客户端传输策略以提高传输能力,并提高客户端从内容分发网络CDN服务器获取的直播流数据相对于以点对点数据传输P2P模式获取的直播流数据的比例的部件。
实施例5
图7示出了本发明的另一个实施例的一种直播流传输设备的结构框图。所述设备1100可以是具备计算能力的主机服务器、个人计算机PC、或者可携带的便携式计算机或终端等。本发明具体实施例并不对计算节点的具体实现做限定。
所述设备1100包括处理器(processor)1110、通信接口(CommunicationsInterface)1120、存储器(memory)1130和总线1140。其中,处理器1110、通信接口1120、以及存储器1130通过总线1140完成相互间的通信。
通信接口1120用于与网络设备通信,其中网络设备包括例如虚拟机管理中心、共享存储等。
处理器1110用于执行程序。处理器1110可能是一个中央处理器CPU,或者是专用集成电路ASIC(ApplicationSpecificIntegratedCircuit),或者是被配置成实施本发明实施例的一个或多个集成电路。
存储器1130用于存放文件。存储器1130可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。存储器1130也可以是存储器阵列。存储器1130还可能被分块,并且所述块可按一定的规则组合成虚拟卷。
在一种可能的实施方式中,上述程序可为包括计算机操作指令的程序代码。该程序具体可用于执行实施例1或2中的各步骤。
本领域普通技术人员可以意识到,本文所描述的实施例中的各示例性单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件形式来实现,取决于技术方案的特定应用和设计约束条件。专业技术人员可以针对特定的应用选择不同的方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
如果以计算机软件的形式来实现所述功能并作为独立的产品销售或使用时,则在一定程度上可认为本发明的技术方案的全部或部分(例如对现有技术做出贡献的部分)是以计算机软件产品的形式体现的。该计算机软件产品通常存储在计算机可读取的非易失性存储介质中,包括若干指令用以使得计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各实施例方法的全部或部分步骤。而前述的存储介质包括U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。