下载流媒体的方法及装置与流程

文档序号:12378970阅读:165来源:国知局
下载流媒体的方法及装置与流程

本发明涉及互联网技术领域,特别是涉及下载流媒体的方法及装置。



背景技术:

随着移动互联网的飞速发展,用户通过移动终端来获取视频、音频等多媒体资源的需求不断增多。尤其是随着网络传输速率的不断提高,用户对高清视频的下载需求也越来越大。目前各大视频网站提供的高清视频大多是基于HLS(HTTP Live Streaming)流媒体播放协议的m3u8视频格式。

m3u8格式的流媒体资源如流媒体视频在制作时,由服务器把压缩后的视频源文件切割成若干小的传输流TS(Transport Stream)片段,或称为TS碎片,每个TS片段分别存储在服务器中的不同地址。服务器根据该源文件包含的各TS片段的存储地址、各TS片段的时长信息以及相关的其他描述信息,生成该视频源文件对应的m3u8描述文件(或称为m3u8索引文件)。服务器向用户提供该视频对应的m3u8描述文件地址。当用户下载该视频时,通过访问该视频的m3u8描述文件地址,获取m3u8描述文件,再从m3u8描述文件中读取出各TS片段对应的存储地址,进而从各存储地址将各TS片段分别下载下来。

在流媒体视频的下载过程中,有时会提示视频源文件地址失效,造成下载失败。这是因为m3u8描述文件具有一定的时效性,出于对视频版权的保护及安全性考虑,服务器经常会变更流媒体视频对应的若干TS片段的存储地址,或者对流媒体视频进行重新切割。当待下载视频的m3u8描述文件失效时,需要重新获取该视频的最新m3u8描述文件,从而获取其中包含的TS片段的最新存储地址,根据该最新存储地址重新下载各TS片段,直至整个视频下载完成。

在流媒体视频的下载过程中可能会出现多次地址失效的情况,并且由于流媒体视频一般都比较大,每一次下载失效后都需要根据最新的m3u8描述文件重新下载TS片段,从而造成时间和带宽资源的浪费。



技术实现要素:

本发明实施例提供了一种下载流媒体的方法及装置,以解决现有技术中当流媒体对应的m3u8描述文件失效后,不得不根据最新的m3u8描述文件重新下载TS片段,造成时间和带宽资源的浪费的问题。

为了解决上述技术问题,本发明实施例公开了如下技术方案:

一方面,本发明提供了一种下载流媒体的方法,所述方法用于下载m3u8格式的流媒体,所述方法包括:

如果用于下载流媒体的当前m3u8描述文件失效,则获取所述流媒体对应的最新m3u8描述文件;

将所述最新m3u8描述文件与失效的m3u8描述文件进行TS片段信息匹配,如果匹配成功,从所述最新m3u8描述文件中获取所述流媒体的下载失败的TS片段的最新地址信息;

根据所述最新地址信息继续下载所述下载失败的TS片段。

优选的,所述将所述最新m3u8描述文件与失效的m3u8描述文件进行TS片段信息匹配包括:

如果所述最新m3u8描述文件中包含的TS片段信息与所述失效的m3u8描述文件中包含的对应TS片段信息属于同一TS片段,则确认匹配成功。

优选的,所述最新m3u8描述文件中包含的TS片段信息与所述失效的m3u8描述文件中包含的对应TS片段信息属于同一TS片段包括:

所述最新m3u8描述文件中包含的TS片段信息的数量与所述失效的m3u8描述文件中包含的TS片段信息的数量相等,并且

所述最新m3u8描述文件中包含的TS片段时长与所述失效的m3u8描述文件中包含的对应TS片段时长相等。

优选的,所述从所述最新m3u8描述文件中获取所述流媒体的下载失败的TS片段的最新地址信息包括:

获取所述下载失败的TS片段的地址信息在所述失效的m3u8描述文件中的索引位置信息;

根据所述索引位置信息从所述最新m3u8描述文件中获取所述下载失败的TS片段的最新地址信息。

优选的,所述方法还包括:

如果所述流媒体下载失败,接收下载失败的提示信息,如果所述提示信息为与当前m3u8描述文件失效这一事件对应的提示信息,则判定所述当前m3u8描述文件失效。

另一方面,本发明提供了一种下载流媒体的装置,所述方法用于下载m3u8格式的流媒体,所述装置包括:

第一获取单元,用于如果用于下载流媒体的当前m3u8描述文件失效,则获取所述 流媒体对应的最新m3u8描述文件;

匹配单元,用于将所述最新m3u8描述文件与失效的m3u8描述文件进行TS片段信息匹配;

第二获取单元,用于如果匹配成功,从所述最新m3u8描述文件中获取所述流媒体的下载失败的TS片段的最新地址信息;

下载单元,用于根据所述最新地址信息继续下载所述下载失败的TS片段。

优选的,所述匹配单元用于如果所述最新m3u8描述文件中包含的TS片段信息与所述失效的m3u8描述文件中包含的对应TS片段信息是否属于同一TS片段,则确认匹配成功。

优选的,所述匹配单元还用于:

如果所述最新m3u8描述文件中包含的TS片段信息的数量与所述失效的m3u8描述文件中包含的TS片段信息的数量是否相等,并且

所述最新m3u8描述文件中包含的TS片段时长与所述失效的m3u8描述文件中包含的对应TS片段时长是否相等,则确认所述最新描述文件中包含的TS片段信息与所述失效的m3u8描述文件中包含的对应TS片段信息属于同一TS片段。

优选的,所述第二获取单元用于获取所述未下载完成的TS片段的地址信息在所述失效的m3u8描述文件中的索引位置信息,并根据所述索引位置信息从所述最新m3u8描述文件中获取所述下载失败的TS片段的最新地址信息。

优选的,所述装置还包括:

接收单元,用于如果所述流媒体下载失败,接收下载失败的提示信息;

判定单元,用于如果所述提示信息为与当前m3u8描述文件失效这一事件对应的提示信息,则判定所述当前m3u8描述文件失效。

上述下载流媒体的方法及装置的技术方案,当用于下载流媒体的当前m3u8描述文件失效时,则获取所述流媒体对应的最新m3u8描述文件,并将所述最新m3u8描述文件与失效的m3u8描述文件进行TS片段信息匹配,如果匹配成功,从所述最新m3u8描述文件中获取所述流媒体的下载失败的TS片段的最新地址信息;根据所述最新地址信息继续下载所述下载失败的TS片段。

本方案通过将最新m3u8描述文件与失效的m3u8描述文件进行TS片段信息匹配,以保证能够从最新m3u8描述文件中准确获取到下载失败的TS片段,从而可以只对下载失败的TS片段进行下载,避免重新下载已下载完成的TS片段而造成时间和带宽资源浪 费。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明下载流媒体的方法的一个实施例的流程示意图;

图2为流媒体视频的m3u8描述文件的示意图;

图3为流媒体视频的m3u8描述文件的另一个示意图;

图4为本发明下载流媒体的装置的一个实施例的结构示意图;

图5为本发明下载流媒体的装置的另一个实施例的结构示意图。

具体实施方式

首先对本发明下载流媒体的方法的实施例进行说明,参见图1,为本发明下载流媒体的方法的一个实施例的流程示意图,所述方法用于下载m3u8格式的流媒体,例如高清视频、音频等。本实施例包括如下步骤:

步骤101:如果用于下载流媒体的当前m3u8描述文件失效,则获取所述流媒体对应的最新m3u8描述文件。

在下载流媒体的过程中,如果由于当前使用的m3u8描述文件失效而造成流媒体下载失败,则根据该流媒体的地址链接信息例如URL,重新请求获取该流媒体的最新m3u8描述文件。m3u8描述文件一般是以“.m3u8”作为文件名后缀。

具体的,如果所述流媒体下载失败,则可以根据下载失败的提示信息判断当前使用的m3u8描述文件是否失效,如果是其他原因引起的下载失败,则不属于本发明涉及的技术方案所能解决的情形。

步骤102:将所述最新m3u8描述文件与失效的m3u8描述文件进行TS片段信息匹配,如果匹配成功,从所述最新m3u8描述文件中获取所述流媒体的下载失败的TS片段的最新地址信息。

匹配成功是为了确保服务器没有对流媒体进行重新切割,从而可以从最新的m3u8描述文件中获取到未下载完成的TS片段的地址信息。参考背景技术可知,有时候流媒体服务器可能会将流媒体重新切割,此时,该流媒体包含的最新TS片段与之前的切割方法所形成的TS片段不同,从而使最新的m3u8描述文件所映射的TS片段与失效的m3u8描 述文件所映射的TS片段也不相同,因此就不能匹配上。

可具体通过判断最新m3u8描述文件中包含的TS片段信息与所述失效的m3u8描述文件中包含的对应TS片段信息是否属于同一TS片段,如果是,则说明匹配成功。

例如,如果最新的m3u8描述文件中的任意编号的TS片段信息与失效的m3u8描述文件中的对应编号的TS片段信息都属于同一个TS片段,则说明匹配成功。

步骤103:根据所述最新地址信息继续下载所述下载失败的TS片段。

本实施例的技术方案,当用于下载流媒体的当前m3u8描述文件失效时,通过将最新m3u8描述文件中包含的TS片段与失效的m3u8描述文件中的TS片段逐一进行信息匹配,当匹配成功时,说明最新的m3u8描述文件未对原流媒体重新切割,这样就能够从最新m3u8描述文件中准确获取到下载失败的TS片段,从而可以只对下载失败的TS片段进行下载,避免重新下载已下载成功的TS片段而造成时间和带宽资源浪费。

在本发明的其他实施例中,上述步骤102中,可以通过如下方法判断所述最新m3u8描述文件中包含的TS片段信息与所述失效的m3u8描述文件中包含的对应TS片段信息是否属于同一TS片段,进而进一步确定所述最新m3u8描述文件与失效的m3u8描述文件进行TS片段信息是否匹配成功:

a):判断所述最新m3u8描述文件中包含的TS片段信息的数量与所述失效的m3u8描述文件中包含的TS片段信息的数量是否相等;

b):判断所述最新m3u8描述文件中包含的TS片段时长与所述失效的m3u8描述文件中包含的对应TS片段时长是否相等。

如果上述a)、b)两项判断结果均为相等,则判定所述最新m3u8描述文件中包含的TS片段信息与所述失效的m3u8描述文件中包含的对应TS片段信息属于同一TS片段,进而确定所述最新m3u8描述文件与失效的m3u8描述文件的TS片段信息匹配成功。

在本发明的其他实施例中,上述步骤103中,具体可根据以下方法从所述最新m3u8描述文件中获取所述流媒体的下载失败的TS片段的最新地址信息:

获取所述下载失败的TS片段的地址信息在所述失效的m3u8描述文件中的索引位置信息;

根据所述索引位置信息从所述最新m3u8描述文件中获取所述下载失败的TS片段的最新地址信息。

如果上述步骤102中匹配成功,则说明最新的m3u8描述文件与失效的m3u8描述文件映射的TS片段是一致的,因此下载失败的TS片段的信息两个描述文件中的索引位置信息也是一样的,因此可以根据下载失败的TS片段的地址信息在所述失效的m3u8描述文件中的索引位置信息从最新m3u8描述文件中获取到下载失败的TS片段的最新地址信息。

下面通过一个实际应用中的实施例来具体介绍一下本发明的下载流媒体的方法,如图2所示为一个m3u8格式的流媒体视频的m3u8描述文件的示意图,该描述文件的名称为“video.m3u8”,由图2中可获得该视频包含的TS片段的数量、时长及各段TS片段的存储地址信息。

通过统计可知,该视频由11个TS片段组成,“#EXTINF”后面的数字即表示对应的TS片段的时长,默认单位为“秒”,紧接着下一段为该片段的实际存储地址,在正常创建下载任务时,会从m3u8描述文件中,读取出该存储地址,并根据该存储地址把对应的TS片段下载下来。

如果在下载该视频的过程中,提示下载出错或下载失败,则根据弹出的提示信息例如“视频源文件地址失效”或“视频源文件地址出错”等类似信息可以确定当前使用的描述文件“video.m3u8”失效。在另一些情况下,该提示信息可能是预设的字母或数字形式的信息提示码,每一种提示码都会对应一种事件,如果所述提示码为与当前m3u8描述文件失效这一事件对应的提示信息,则判定所述当前m3u8描述文件失效。进一步通过下载中产生的提示信息或中间文件可以确定下载失败的TS片段,假设本实施例中为串行下载,在下载第5个TS片段时出错,则第5个TS片段及之后直至第11个TS片段都未下载完成。

通过该视频的地址链接,重新请求获得该视频对应的最新m3u8描述文件,如图3所示,假设该最新m3u8描述文件的名称为“video_new.m3u8”,经过与“video.m3u8”描述文件比对可知,两个描述文件包含的TS片段的个数都为11个,各TS片段的时长对应相等,都为{8、3、3、3、9、9、9、10、10、10、10},单位为“秒”,则可确认该最新m3u8描述文件与原有的失效的描述文件匹配成功。

在描述文件video_new.m3u8中从出错的TS片段(即第5个)开始,读取出后面TS片段的存储地址(即第5至第11个),并用该地址替换掉原下载任务中的第5至第11个TS片段的原地址,继续下载该视频,原下载成功的TS片段(第1至第4个)可以重用,无需再下载。

如果在后续的下载过程中又出现相同类型的下载失败的提示,则可重复使用上述方法,直至该视频的所有TS片段都下载成功。

与上述下载流媒体的方法的实施例相对应,本发明还提供了下载流媒体的装置的实施例,参见图4,为本发明下载流媒体的装置的一个实施例的结构示意图,为了描述的方便,描述本申请的装置时以功能划分,对各个功能单元分别描述。当然,在实施本发明时可以把各单元的功能集成在在同一个或多个软件和/或硬件中实现。

所述装置包括:第一获取单元401、匹配单元402、第二获取单元403、下载单元404。

其中,所述第一获取单元401,用于如果用于下载流媒体的当前m3u8描述文件失效,则获取所述流媒体对应的最新m3u8描述文件;

所述匹配单元402,用于将所述最新m3u8描述文件与失效的m3u8描述文件进行TS片段信息匹配;

所述第二获取单元403,用于如果匹配成功,从所述最新m3u8描述文件中获取所述流媒体的下载失败的TS片段的最新地址信息;

所述下载单元404,用于根据所述最新地址信息继续下载所述下载失败的TS片段。

在本发明的其他实施例中,所述匹配单元402用于如果所述最新m3u8描述文件中包含的TS片段信息与所述失效的m3u8描述文件中包含的对应TS片段信息是否属于同一TS片段,则确认匹配成功。

优选的,所述匹配单元402还用于:

如果所述最新m3u8描述文件中包含的TS片段信息的数量与所述失效的m3u8描述文件中包含的TS片段信息的数量是否相等,并且

所述最新m3u8描述文件中包含的TS片段时长与所述失效的m3u8描述文件中包含的对应TS片段时长是否相等,则确认所述最新描述文件中包含的TS片段信息与所述失效的m3u8描述文件中包含的对应TS片段信息属于同一TS片段。

具体的,所述第二获取单元403用于获取所述未下载完成的TS片段的地址信息在所述失效的m3u8描述文件中的索引位置信息,并根据所述索引位置信息从所述最新m3u8描述文件中获取所述下载失败的TS片段的最新地址信息。

如图5所示,为本发明下载流媒体的装置的另一个实施例的结构示意图,所述装置还包括:

接收单元405,用于如果所述流媒体下载失败,接收下载失败的提示信息;

判定单元406,用于如果所述提示信息为与当前m3u8描述文件失效这一事件对应的 提示信息,则判定所述当前m3u8描述文件失效。

上述下载流媒体的装置的实施例,其中各个模块单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明,相关之处参见上述方法实施例的部分说明即可。

本实施例的装置,当用于下载流媒体的当前m3u8描述文件失效时,通过将最新m3u8描述文件中包含的TS片段与失效的m3u8描述文件中的TS片段逐一进行信息匹配,当匹配成功时,说明最新的m3u8描述文件未对原流媒体重新切割,这样就能够从最新m3u8描述文件中准确获取到下载失败的TS片段,从而可以只对下载失败的TS片段进行下载,避免重新下载已下载成功的TS片段而造成时间和带宽资源浪费。

本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件的方式来实现,通用硬件包括通用集成电路、通用CPU、通用存储器、通用元器件等,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置和系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1