实现流媒体直播动态码率的方法及系统转让专利

申请号 : CN201310146474.2

文献号 : CN103281568B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 洪珂白永光邹焕英

申请人 : 网宿科技股份有限公司

摘要 :

本发明提供了一种实现流媒体直播动态码率的方法及系统,该方法包括:源服务器仅提供具有第一码率的高码率媒体流;内容分发网络服务器从该源服务器获取该高码率媒体流;所述内容分发网络服务器转换该高码率媒体流得到多路低码率媒体流,所述多路低码率媒体流分别具有低于所述第一码率的多种不同码率;所述内容分发网络服务器根据与播放器间的数据传输状况,将所述多路低码率媒体流其中之一或高码率媒体流的路径动态更新至播放列表内,并将该播放列表发送至所述播放器以供播放。本发明能够减小源服务器的工作负担和运行复杂度,也有利于降低源服务器所需的带宽。

权利要求 :

1.一种实现流媒体直播动态码率的方法,其特征在于,包括:

源服务器仅提供具有第一码率的高码率媒体流;

内容分发网络服务器从该源服务器获取该高码率媒体流;

所述内容分发网络服务器转换该高码率媒体流得到多路低码率媒体流,所述多路低码率媒体流分别具有低于所述第一码率的多种不同码率;

所述内容分发网络服务器根据与播放器间的数据传输状况,将所述多路低码率媒体流其中之一或高码率媒体流的路径动态更新至播放列表内,并将该播放列表发送至所述播放器以供播放,其中,所述内容分发网络服务器根据与播放器间的数据传输状况,将所述多路低码率媒体流其中之一或高码率媒体流的路径动态更新至播放列表内包括:所述内容分发网络服务器将所述高码率媒体流的路径写入所述播放列表,并将所述播放列表传输至所述播放器,以使所述播放器播放该高码率媒体流;

在播放该高码率媒体流时,如果所述内容分发网络服务器根据与播放器间的数据传输有延迟,则将所述多路低码率媒体流其中之一的路径更新至所述播放列表,并将所述播放列表传输至所述播放器,以使所述播放器播放该低码率媒体流。

2.根据权利要求1所述的方法,其特征在于,所述第一码率为流媒体直播支持的最高码率。

3.根据权利要求1所述的方法,其特征在于,还包括:在播放所述多路低码率媒体流中的第一媒体流时,如果所述内容分发网络服务器与播放器间的数据传输有延迟,则将所述多路低码率媒体流中码率低于该第一媒体流的第二媒体流的路径更新至所述播放列表,并将所述播放列表传输至所述播放器,以使所述播放器播放该第二媒体流。

4.根据权利要求1所述的方法,其特征在于,还包括:在播放所述多路低码率媒体流中的第一媒体流时,如果所述内容分发网络服务器与播放器间的数据传输超前,则将所述多路低码率媒体流中码率高于该第一媒体流的第三媒体流的路径或所述高码率媒体流的路径更新至所述播放列表,以使所述播放器播放所述第三媒体流或高码率媒体流。

5.一种实现流媒体直播动态码率的系统,其特征在于,包括源服务器和内容分发网络服务器,所述源服务器仅提供具有第一码率的高码率媒体流,所述内容分发网络服务器包括:获取单元,用于从该源服务器获取高码率媒体流;

转换单元,转换该高码率媒体流得到多路低码率媒体流,所述多路低码率媒体流分别具有低于所述第一码率的多种不同码率;

动态更新单元,根据与播放器间的数据传输状况,将所述多路低码率媒体流其中之一或高码率媒体流的路径动态更新至播放列表内,并将该播放列表发送至所述播放器以供播放,其中,所述动态更新单元包括:

第一更新模块,将所述高码率媒体流的路径写入所述播放列表,并将所述播放列表传输至所述播放器,以使所述播放器播放该高码率媒体流;

第二更新模块,在播放该高码率媒体流时,如果所述内容分发网络服务器与播放器间的数据传输有延迟,则将所述多路低码率媒体流其中之一的路径更新至所述播放列表,并将所述播放列表传输至所述播放器,以使所述播放器播放该低码率媒体流。

6.根据权利要求5所述的系统,其特征在于,所述第一码率为流媒体直播支持的最高码率。

7.根据权利要求5所述的系统,其特征在于,

在播放所述多路低码率媒体流中的第一媒体流时,如果所述内容分发网络服务器与播放器间的数据传输有延迟,则所述第二更新模块将所述多路低码率媒体流中码率低于该第一媒体流的第二媒体流的路径更新至所述播放列表,并将所述播放列表传输至所述播放器,以使所述播放器播放该第二媒体流。

8.根据权利要求5所述的系统,其特征在于,所述动态更新单元还包括:

第三更新模块,在播放所述多路低码率媒体流中的第一媒体流时,如果所述内容分发网络服务器与播放器间的数据传输超前,则将所述多路低码率媒体流中码率高于该第一媒体流的第三媒体流的路径或所述高码率媒体流的路径更新至所述播放列表,以使所述播放器播放所述第三媒体流或高码率媒体流。

说明书 :

实现流媒体直播动态码率的方法及系统

技术领域

[0001] 本发明涉及流媒体直播技术,尤其涉及一种在内容分发网络中实现流媒体直播动态码率的方法及系统。

背景技术

[0002] 目前的HTTP流媒体直播动态码流技术是在客户端实现的,客户端首先获得所有该节目的码率信息,然后根据自身的网络状况,选择特定码率媒体流对应的URL进行播放。
[0003] 通常,服务器将节目的所有码率信息在m3u8(m3u是一种播放列表文件,而m3u8是UTF-8编码的该种文件)列表里列出。一个描述动态码率的m3u8例子文件如下:
[0004] #EXTM3U
[0005] #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1280000
[0006] http://example.com/low.m3u8
[0007] #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2560000
[0008] http://example.com/mid.m3u8
[0009] #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=7680000
[0010] http://example.com/hi.m3u8
[0011] #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=65000,CODECS="mp4a.40.5"[0012] http://example.com/audio-only.m3u8
[0013] 客户端根据网络状况选择不同的m3u8 URL来请求播放。如上面的例子,客户端若要选择BANDWIDTH=2560000的节目,则请求http://example.com/mid.m3u8进行播放。这样播放器就会根据自身网络状况在高低码率间切换播放的流,达到流畅播放,也即实现动态码率。
[0014] 现有技术存在以下三个方面的问题:
[0015] 1>源服务器需要维护所有码率的频道,使得源服务器的工作负担大,运行复杂度高;
[0016] 2>目前的流媒体直播基本都要靠内容分发网络(CDN,Content Delivery Network)来完成传输,现有技术中的上述模式,高码率和低码率的频道全部都要回源,导致运行成本增大;
[0017] 3>对于不同码率的自适应调整,播放器需要事先获得所有码率的频道名,如果需要动态增删其它码率的频道则比较困难,另外如果某个码率的流损坏,则播放器仍然会去请求该流。

发明内容

[0018] 本发明要解决的技术问题是提供一种实现流媒体直播动态码率的方法及系统,能够减小源服务器的工作负担和运行复杂度,也有利于降低源服务器所需的带宽。
[0019] 为解决上述技术问题,本发明提供了一种实现流媒体直播动态码率的方法,包括:
[0020] 源服务器仅提供具有第一码率的高码率媒体流;
[0021] 内容分发网络服务器从该源服务器获取该高码率媒体流;
[0022] 所述内容分发网络服务器转换该高码率媒体流得到多路低码率媒体流,所述多路低码率媒体流分别具有低于所述第一码率的多种不同码率;
[0023] 所述内容分发网络服务器与播放器间的数据传输状况,将所述多路低码率媒体流其中之一或高码率媒体流的路径动态更新至播放列表内,并将该播放列表发送至所述播放器以供播放。
[0024] 根据本发明的一个实施例,所述第一码率为流媒体直播支持的最高码率。
[0025] 根据本发明的一个实施例,所述内容分发网络服务器根据与播放器间的数据传输状况,将所述多路低码率媒体流其中之一或高码率媒体流的路径动态更新至播放列表内包括:
[0026] 所述内容分发网络服务器将所述高码率媒体流的路径写入所述播放列表,并将所述播放列表传输至所述播放器,以使所述播放器播放该高码率媒体流;
[0027] 在播放该高码率媒体流时,如果所述内容分发网络服务器根据与播放器间的数据传输有延迟,则将所述多路低码率媒体流其中之一的路径更新至所述播放列表,并将所述播放列表传输至所述播放器,以使所述播放器播放该低码率媒体流。
[0028] 根据本发明的一个实施例,该方法还包括:在播放所述多路低码率媒体流中的第一媒体流时,如果所述内容分发网络服务器与播放器间的数据传输有延迟,则将所述多路低码率媒体流中码率低于该第一媒体流的第二媒体流的路径更新至所述播放列表,并将所述播放列表传输至所述播放器,以使所述播放器播放该第二媒体流。
[0029] 根据本发明的一个实施例,该方法还包括:在播放所述多路低码率媒体流中的第一媒体流时,如果所述内容分发网络服务器与播放器间的数据传输超前,则将所述多路低码率媒体流中码率高于该第一媒体流的第三媒体流的路径或所述高码率媒体流的路径更新至所述播放列表,以使所述播放器播放所述第三媒体流或高码率媒体流。
[0030] 本发明还提供了一种实现流媒体直播动态码率的系统,包括源服务器和内容分发网络服务器,所述源服务器仅提供具有第一码率的高码率媒体流,所述内容分发网络服务器包括:
[0031] 获取单元,用于从该源服务器获取高码率媒体流;
[0032] 转换单元,转换该高码率媒体流得到多路低码率媒体流,所述多路低码率媒体流分别具有低于所述第一码率的多种不同码率;
[0033] 动态更新单元,根据与播放器间的数据传输状况,将所述多路低码率媒体流其中之一或高码率媒体流的路径动态更新至播放列表内,并将该播放列表发送至所述播放器以供播放。
[0034] 根据本发明的一个实施例,所述第一码率为流媒体直播支持的最高码率。
[0035] 根据本发明的一个实施例,所述动态更新单元包括:
[0036] 第一更新模块,将所述高码率媒体流的路径写入所述播放列表,并将所述播放列表传输至所述播放器,以使所述播放器播放该高码率媒体流;
[0037] 第二更新模块,在播放该高码率媒体流时,如果所述内容分发网络服务器根据与播放器间的数据传输有延迟,则将所述多路低码率媒体流其中之一的路径更新至所述播放列表,并将所述播放列表传输至所述播放器,以使所述播放器播放该低码率媒体流。
[0038] 根据本发明的一个实施例,在播放所述多路低码率媒体流中的第一媒体流时,如果所述内容分发网络服务器与播放器间的数据传输有延迟,则所述第二更新模块将所述多路低码率媒体流中码率低于该第一媒体流的第二媒体流的路径更新至所述播放列表,并将所述播放列表传输至所述播放器,以使所述播放器播放该第二媒体流。
[0039] 根据本发明的一个实施例,所述动态更新单元还包括:第三更新模块,在播放所述多路低码率媒体流中的第一媒体流时,如果所述内容分发网络服务器与播放器间的数据传输超前,则将所述多路低码率媒体流中码率高于该第一媒体流的第三媒体流的路径或所述高码率媒体流的路径更新至所述播放列表,以使所述播放器播放所述第三媒体流或高码率媒体流。
[0040] 与现有技术相比,本发明具有以下优点:
[0041] 本发明实施例的实现流媒体直播动态码率的方法及系统中,源服务器只需要提供一路最高码率的流即可,不需要提供其他码率的流以及单音频流,从而减少了源服务器的工作负担和运行复杂度。
[0042] 进一步地,本发明实施例的内容分发网络服务器只需要回源服务器获取最高码率的流即可,其他码率的流由内容分发网络服务器转换得到,不需要回源获取,因而大大减小了运营的带宽成本。例如提供1.5Mb、800Kb、400Kb、200Kb、100Kb这集中码率的频道,传统的全部回源的方式需要的带宽为各种码率带宽之和,即3.0Mb,而采用本发明实施例的方案仅需要1.5Mb带宽,减少了一半。
[0043] 另外,本发明实施例的系统不需要将所有支持的码率信息提前下发给播放器,可以动态地加入或删除某个码率的流,且码率的变化对客户端几乎透明。

附图说明

[0044] 图1是本发明实施例实现流媒体直播动态码率的方法的流程示意图;
[0045] 图2是本发明实施例实现流媒体直播动态码率的系统的结构框图;
[0046] 图3是本发明实施例实现流媒体直播动态码率的系统的详细结构框图;
[0047] 图4是本发明实施例实现流媒体直播动态码率的方法中内容分发网络服务器的工作流程示意图;
[0048] 图5是本发明实施例实现流媒体直播动态码率的方法中播放器的工作流程示意图。

具体实施方式

[0049] 下面结合具体实施例和附图对本发明作进一步说明,但不应以此限制本发明的保护范围。
[0050] 参考图1,本实施例中,实现流媒体直播动态码率的方法包括如下步骤:
[0051] 步骤S11,源服务器仅提供具有第一码率的高码率媒体流;
[0052] 步骤S12,内容分发网络服务器从该源服务器获取该高码率媒体流;
[0053] 步骤S13,所述内容分发网络服务器转换该高码率媒体流得到多路低码率媒体流,所述多路低码率媒体流分别具有低于所述第一码率的多种不同码率;
[0054] 步骤S14,所述内容分发网络服务器根据与播放器间的数据传输状况,将所述多路低码率媒体流其中之一或高码率媒体流的路径动态更新至播放列表内,并将该播放列表发送至所述播放器以供播放。
[0055] 进一步而言,步骤S11中,源服务器提供的高码率媒体流的第一码率可以是流媒体直播支持的最高码率。
[0056] 步骤S14中,播放列表可以采用m3u8文件,但并不限于此。每次对该m3u8文件更新后,可以在其中加入标记,例如可以在m3u8文件中加入#EXT-X-DISCONTINUITY标签。记录在m3u8文件中的路径例如可以是各个媒体流的URL。例如,高码率媒体流和低码率媒体流可以封装成ts(transport stream)文件,m3u8文件记录的是各ts文件的URL。
[0057] 更加具体而言,内容分发网络服务器可以首先将高码率媒体流的ts文件的URL写入m3u8文件发送给播放器。播放器获取该m3u8文件后播放该高码率媒体流,内容分发网络服务器根据媒体流的数据传输状况来调整当前的m3u8文件的内容。如果媒体流的数据传输有延迟,也即媒体流的数据传输时间大于媒体流的播放时间,则将较低码率的低码率媒体流的ts文件的URL更新至m3u8文件中;如果媒体流的数据传输有超前,也即媒体流的数据传输时间小于媒体流的播放时间,则将较高码率的媒体流(可以是低码率媒体流之一,也可以是高码率媒体流)的ts文件的URL更新至m3u8文件。每次更新m3u8文件之后,可以在m3u8文件中写入#EXT-X-DISCONTINUITY关键字。
[0058] 内容分发网络服务器在接收到来自播放器的m3u8文件更新请求后,可以将当前的m3u8文件发送至播放器,使得播放器能够播放更新后的m3u8中的URL所指向的媒体流。
[0059] 图2示出了一实例中的实现流媒体直播动态码率的系统的结构框图,包括:源服务器21、内容分发网络服务器22以及播放器23。源服务器21仅提供最高码率的高码率媒体流,在该实例中具体为高清码率(2Mb)的媒体流。内容分发网络服务器22从源服务器获取该高码率媒体流之后,转换得到多路低码率媒体流,在该实例中具体包括标清码率(1.5Mb)的媒体流、普通码率(800Kb)的媒体流、普通码率(400Kb)的媒体流、普通码率(200Kb)的媒体流……纯音频流,上述多个低码率媒体流连同高清码率的高码率媒体流都可以提供给播放器23。
[0060] 参考图3,内容分发网络服务器22可以包括:获取单元221,从源服务器21获取高码率媒体流;转换单元222,将高码率媒体流转换得到多路低码率媒体流,所述多路低码率媒体流的码率都低于高码率媒体流的码率,并且各个多路低码率媒体流具有不同的码率;动态更新单元223,根据与播放器23间的数据传输状况,将多路低码率媒体流其中之一或高码率媒体流的路径动态更新至播放列表内,并将该播放列表发送至播放器23以供播放。
[0061] 进一步而言,动态更新单元233可以包括:第一更新模块,将高码率媒体流的路径写入播放列表,并将播放列表传输至播放器,以使播放器播放该高码率媒体流;第二更新模块,在播放该高码率媒体流时,如果内容分发网络服务器与播放器间的数据传输有延迟,则将所述多路低码率媒体流其中之一的路径更新至播放列表,并将播放列表传输至播放器,以使播放器播放该低码率媒体流,在播放所述多路低码率媒体流中的第一媒体流时,如果内容分发网络服务器与播放器间的数据传输有延迟,则该第二更新模块将多路低码率媒体流中码率低于该第一媒体流的第二媒体流的路径更新至所述播放列表,并将播放列表传输至播放器,以使播放器播放该第二媒体流;第三更新模块,在播放多路低码率媒体流中的第一媒体流时,如果内容分发网络服务器与播放器间的数据传输超前,则将多路低码率媒体流中码率高于该第一媒体流的第三媒体流的路径或高码率媒体流的路径更新至播放列表,以使播放器播放第三媒体流或高码率媒体流。
[0062] 内容分发网络服务器可以从源服务器获取最高码率的高码率媒体流,然后将其转换为多路码率较低的低码率媒体流,该高码率媒体流和多路低码率媒体流可以封装为ts文件传输至客户端的播放器。参考图4,下面对一实例中内容分发网络服务器的详细工作流程进行说明。
[0063] 在401处开始。
[0064] 在402处,内容分发网络服务器接收基于HTTP的流媒体直播(HLS,HTTP Live Streaming)请求。例如,播放器的访问请求针对的是http://example.com/live/livestream.m3u8。
[0065] 在403处,内容分发网络服务器将最高码率的ts文件的URL写入m3u8文件并发送给播放器。
[0066] 在404处,播放器请求m3u8文件中记录的ts文件,此时m3u8文件中记录的ts文件具体为最高码率的ts文件。
[0067] 在405处,判断流是否发生延迟,也即传输媒体流(即ts文件)的时间大于媒体流的播放时间,流的数据传输有延迟。如果是,则转向406。
[0068] 在406处,判断目前播放的是否是最低码率的ts文件,如果是的话,前进至412,将当前码率的ts文件的URL写入下一个m3u8文件,也即更新后的m3u8文件中记录的URL不变;进而前进至408,判断直播是否结束,如果结束则前进至410结束;如果直播未结束,则转向
409,根据播放器的请求,将更新后m3u8文件发送至播放器,使得播放器播放按照其中记录的URL播放对应的ts文件,也即仍然播放当前的ts文件。
[0069] 在406处,如果目前播放的并非是最低码率的ts文件,则转向407,将较低码率的ts文件的URL写入至下一个m3u8文件,同时在m3u8文件中写入#EXT-X-DISCONTINUITY关键字以表示URL已经更改;进而前进至408,判断直播是否结束,如果结束则前进至410结束;如果直播未结束,则转向409,根据播放器的请求,将更新后m3u8文件发送至播放器,使得播放器播放按照其中记录的URL播放对应的ts文件,也即仍然播放码率更低的一路低码率媒体流对应的ts文件。
[0070] 在405处,如果媒体流的传输未发生延迟,则前进至411,判断流是否发送的很快,是否很快的判断标准优选为发送ts文件的时间是媒体数据时间的一半内,也即ts文件的传输时间是该ts文件的播放文件的一半以内。如果411处的判断结果为否,则转向412,将当前码率的ts文件的URL写入下一个m3u8文件,也即更新后的m3u8文件中记录的URL不变;进而前进至408,判断直播是否结束,如果结束则前进至410结束;如果直播未结束,则转向409,根据播放器的请求,将更新后m3u8文件发送至播放器,使得播放器播放按照其中记录的URL播放对应的ts文件,也即仍然播放当前的ts文件。
[0071] 如果411处判断的结果为是,则前进至413,判断目前播放的ts文件是否为最高码率的ts文件,如果是,则转向412,将当前码率的ts文件的URL写入下一个m3u8文件,也即更新后的m3u8文件中记录的URL不变;进而前进至408,判断直播是否结束,如果结束则前进至410结束;如果直播未结束,则转向409,根据播放器的请求,将更新后m3u8文件发送至播放器,使得播放器播放按照其中记录的URL播放对应的ts文件,也即仍然播放当前的ts文件。
[0072] 如果413处的判断结果为否,在前进至414,将较高码率的ts文件的URL写入下一个m3u8文件中,同时在m3u8文件中写入#EXT-X-DISCONTINUITY关键字以表示URL已经更改。进而前进至408,判断直播是否结束,如果结束则前进至410结束;如果直播未结束,则转向409,根据播放器的请求,将更新后m3u8文件发送至播放器,使得播放器播放按照其中记录的URL播放对应的ts文件,也即播放码率更高的一路媒体流(可以是最高码率的高码率媒体流,或者比当前的低码率媒体流的码率更高的一路低码率媒体流)对应的ts文件。
[0073] 播放器向内容分发网络服务器可以遵照HLS协议规定的规则,请求更新m3u8文件,并下载其中记录的URL指向的ts文件,经过解码后播放。参考图5,下面对一实例中播放器的详细工作流程进行说明。
[0074] 在501处开始。
[0075] 在502处,播放器请求m3u8文件。
[0076] 在503处,播放器获取m3u8文件里的ts文件。需要说明的是,m3u8文件中记载的是ts文件的URL,播放器根据该URL从内容分发网络服务器获取该URL指向的ts文件。
[0077] 在504处,将ts文件送入解码器进行播放。
[0078] 在505处,判断直播是否结束,如果是的话则前进至507结束。
[0079] 如果未结束,则转向506,向内容分发网络服务器请求更新m3u8文件。播放器得到的新的m3u8文件是内容分发网络服务器根据和播放器之间的数据传输状况更新得到的,其中记录有更高码率、更低码率或当前媒体流的路径。使得播放器能够根据数据传输状况动态播放适当码率的媒体流。
[0080] 本发明虽然以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,都可以做出可能的变动和修改,因此本发明的保护范围应当以本发明权利要求所界定的范围为准。