一种基于hls协议的视频下载方法及其装置制造方法

文档序号:7779728阅读:201来源:国知局
一种基于hls协议的视频下载方法及其装置制造方法
【专利摘要】本发明提供一种基于HLS协议的视频下载方法及其装置。所述方法包括:S1.从云服务器获取下载目标视频的m3u8文件;S2.判断所述m3u8文件中的待下载URL对应的视频片段能否下载:能则转至步骤S3,否则转至步骤S4;S3.根据所述待下载URL下载对应的视频片段,并将下载到的各个视频片段分别存储在本地磁盘中的指定位置上;S4.以所述待下载URL的下一个URL为新的待下载URL,转至步骤S2。本发明减少了视频下载过程中等待出错视频片段的时间,提高了下载速度。
【专利说明】一种基于HLS协议的视频下载方法及其装置
【技术领域】
[0001]本发明涉及视频通讯【技术领域】,尤其涉及一种基于HLS协议的视频下载方法及其
>J-U ρ?α装直。
【背景技术】
[0002]HLS (Http live streaming)协议是苹果公司实现的基于超文本传输协议Http的流媒体传输协议,HLS协议将容量巨大的连续媒体数据进行分段,分割为数量众多的小文件进行传递,迎合了网页服务器的文件传输性,采用一个不断更新的轻量级索引文件来控制分割后小媒体文件的下载和播放,可以实现流媒体的直播和点播。HLS协议在优先考虑流畅性的前提下支持码率的自动切换,目前被各大视频网站广泛使用。
[0003]通过HLS协议,视频数据经处理后分为视频片段ts文件以及媒体数据索引m3u8文件,并存在于云服务器上。m3u8文件实际上只是一种文件组的组织形式,将视频片段ts文件以播放列表的形式组织在一起以供多媒体播放器下载播放。
[0004]m3u8文件中通常包括多个视频片段的多个统一资源定位符URL。多媒体播放器获取m3u8文件后,进而按照其中的URL下载对应的视频片段并进行播放。也可以按照m3u8文件中的URL将视频片段下载并存储在本地,以供后续在本地进行播放。对于HLS协议的视频下载,是依据m3u8文件中URL的顺序从云服务器逐个依次下载视频片段,下载完成后是一个完整的视频文件。由于是依照顺序逐个下载,当其中某一个视频片段的下载出现问题时,将会影响其后的所有视频片段的下载,因此总体下载速度较慢。
[0005]综上,一种能够提高`下载速度的视频下载方法及其装置是亟待提供的。

【发明内容】

[0006]有鉴于此,本发明提供一种基于HLS协议的视频下载方法及其装置,以解决依照顺序逐个下载视频片段所带来的视频下载速度慢的问题。
[0007]具体地,所述方法包括:
[0008]S1.从云服务器获取下载目标视频的m3u8文件;
[0009]S2.判断所述m3u8文件中的待下载URL对应的视频片段能否下载:能则转至步骤S3,否则转至步骤S4 ;
[0010]S3.根据所述待下载URL下载对应的视频片段,并将下载到的各个视频片段分别存储在本地磁盘中的指定位置上;
[0011]S4.以所述待下载URL的下一个URL为新的待下载URL,转至步骤S2。
[0012]进一步地,步骤S2中,判断所述m3u8文件中的待下载URL对应的视频片段能否下载的过程包括:判断所述m3u8文件中的待下载URL对应的视频片段在预定的时间内是否下载完成。
[0013]进一步地,所述方法还包括:
[0014]S5.在所有能下载的视频片段下载完成后,下载步骤S2中未能下载的视频片段。[0015]进一步地,所述方法还包括:
[0016]S6.根据视频片段所在的指定位置的路径,生成所述目标视频的本地m3u8文件。
[0017]进一步地,所述方法还包括:
[0018]S7.将所述m3u8文件保存到本地,并在所述m3u8文件中标记已完成下载的URL,在重新启动所述目标视频的下载时,根据本地保存的所述m3u8文件中未做标记的URL继续下载。
[0019]所述装置包括:
[0020]获取模块,用于从云服务器获取下载目标视频的m3u8文件;
[0021]判断模块,用于判断所述m3u8文件中的待下载URL对应的视频片段能否下载;若能,则将判断结果发送至下载模块;若不能,则以所述待下载URL的下一个URL为新的待下载URL进行判断;
[0022]下载模块,用于在所述m3u8文件中的待下载URL对应的视频片段能下载时,根据所述待下载URL下载对应的视频片段,并将下载到的各个视频片段分别存储在本地磁盘中的指定位置上。
[0023]进一步地,下载模块判断所述m3u8文件中的待下载URL对应的视频片段能否下载的过程包括:判断所述m3u8文件中的待下载URL对应的视频片段在预定的时间内是否下载完成。
[0024]进一步地,所述下载模块,还用于在所有能下载的视频片段下载完成后,下载经判断未能下载的视频片段。
[0025]进一步地,所述装置还包括:
[0026]生成模块,用于根据视频片段所在的指定位置的路径,生成所述目标视频的本地m3u8文件。
[0027]进一步地,所述下载模块,还用于将所述m3u8文件保存到本地,并在所述m3u8文件中标记已完成下载的URL,在重新启动所述目标视频的下载时,根据本地保存的所述m3u8文件中未做标记的URL继续下载。
[0028]由以上描述可以看出,本发明在下载视频的过程中,先判断m3u8文件中待下载URL对应的视频片段能否下载,如果能下载则依据该URL下载对应的视频片段,如果不能下载,则跳过该视频片段,以所述待下载URL的下一个URL为新的待下载URL进行判断。因此,即使在某一个视频片段下载出错时,也可以跳过该出错的视频片段,继续下载下一个视频片段,而后续再下载出错的视频片段时,其故障问题极有可能已经恢复。所以本发明减少了视频下载过程中等待出错视频片段的时间,提高了下载速度。
【专利附图】

【附图说明】
[0029]图1是本发明一种实施方式中视频下载方法流程示意图;
[0030]图2是本发明一种实施方式中目标视频的m3u8文件示意图;
[0031]图3是本发明一种实施方式中目标视频的本地m3u8文件示意图;
[0032]图4是本发明一种实施方式中视频下载装置的结构示意图。
【具体实施方式】[0033]针对现有技术中存在的下载速度较慢的问题,本发明提供一种基于HLS协议的视频下载方法。为进一步说明本发明,提供下列实施例:
[0034]实施例一
[0035]请参考图1,本实施例的基于HLS协议的视频下载方法包括以下步骤:
[0036]步骤101.从云服务器获取下载目标视频的m3u8文件。
[0037]步骤102.判断所述m3u8文件中的待下载URL对应的视频片段能否下载:能则转至步骤103,否则转至步骤104。
[0038]步骤103.根据所述待下载URL下载对应的视频片段,并将下载到的各个视频片段分别存储在本地磁盘中的指定位置上。
[0039]步骤104.以所述待下载URL的下一个URL为新的待下载URL,转至步骤102。
[0040]依据HLS协议,获知用户选定下载的目标视频后,首先从云服务器获取该目标视频的m3u8文件,请参考图2所示的m3u8文件示意图,其中:
[0041]#EXTM3U:表示m3u文件头,放在第一行。
[0042]#EXT-X-TARGETDURATION:表示指定的最大视频片段时长,单位是秒。
[0043]#EXTINF:表示每个视频片段ts文件的时长,仅对其后的URL有效,#EXTINF中指定的时长必须小于等于#EXT-X-TARGETDURATION中指定的时长。
[0044]http://218.30.13.36/sample_100k_l.ts:表不视频片段 sample_100k_l 的媒体数据ts文件的URL。
[0045]#EXT-X-ENDLIST:表示 m3u8 文件的结束符。
[0046]通常来讲,一个完整的视频对应一个m3u8文件,该m3u8文件中包括这个完整视频的多个视频片段的URL。本发明在获取到上述m3u8文件后,根据该m3u8文件中视频片段的URL从云服务器顺序下载视频片段,并将各个视频片段分别存储在指定的位置上。该指定的位置位于本地磁盘上,可以是下载的默认位置,比如,默认下载位置是:c:\users\Download,也可以是用户自定义的位置。
[0047]仍以图2所示的m3u8文件为例,顺序下载上述m3u8文件中的视频片段:sample_100k-l.ts、sample_100k-2.ts 以及 sample_100k_3.ts。在这个过程中,如果其中某一个待下载的URL对应的视频片段经判断不能下载,比如:待下载的URL:http://218.30.13.36/sample_100k-2.ts 对应的视频片段 sample_100k_2.ts 不能下载,那么则跳过 sample_100k-2.ts,以上述 m3u8 文件中 http://218.30.13.36/sample_100k-2.ts 的下一个URL:http://218.30.13.36/sample_100k-3.ts 作为待下载的URL进行判断,如果sample_100k_3.ts可以下载,则继续下载sample_100k_3.ts。整个过程不会因为sample_100k_2.ts的无法下载而导致sample_100k_3.ts也无法下载。
[0048]由以上描述可以看出,本发明在下载视频的过程中,先判断m3u8文件中待下载URL对应的视频片段能否下载,如果能下载则依据该URL下载对应的视频片段,如果不能下载,则跳过该视频片段,以所述待下载URL的下一个URL为新的待下载URL进行判断。因此,即使在某一个视频片段下载出错时,也可以跳过该出错的视频片段,继续下载下一个视频片段,而后续再下载出错的视频片段时,其故障问题极有可能已经恢复。所以本发明减少了视频下载过程中等待出错视频片段的时间,提高了下载速度。
[0049]实施例二[0050]本实施例在实施例一的基础上进一步地限定判断上述m3u8文件中的待下载URL对应的视频片段能否下载的过程包括:判断m3u8文件中的待下载URL对应的视频片段在预定的时间内是否下载完成。
[0051]在实际应用中,视频片段无法下载往往会有很多原因,比如:云服务器故障、网络中断等等。无论哪种情况,都会造成短时间内待下载URL对应的视频片段不能下载完成。所以,本实施例通过判断视频片段在预定的时间能否下载完成来判断视频片段是否下载故障。上述预定的时间可以由管理员根据视频片段的大小和平均网速来设置。
[0052]进一步地,本实施例在所有能下载的视频片段都下载完成后,下载步骤102中未能下载的视频片段,以实现对整个目标视频的下载。本发明设计跳过下载故障的视频片段,优先下载没有下载故障的视频片段,并在所有没有下载故障的视频片段下载完成后,再下载之前跳过的故障视频片段,这个时候,之前不能下载的视频片段的故障问题极有可能已经恢复,这就节省了等待下载故障视频片段的时间,提高了下载速度。
[0053]实施例三
[0054]本实施例在实施例一的基础上进一步地限定:根据视频片段所在的指定位置的路径,生成所述目标视频的本地m3u8文件。
[0055]本实施例在视频片段下载完成的同时,生成本地m3u8文件。优选地,该本地m3u8文件的格式和云服务器的相同,不同的是本地m3u8文件中的URL是本地地址。以图2所示的m3u8文件中的视频片段下载到本地磁盘C:\Users\Download中为例,下载完成后生成的本地m3u8文件如图3所示。通过生成上述本地m3u8文件以实现后续对目标视频的合成以
及播放。
[0056]对于传统的视频下载而言,下载完成后呈现给用户的是一个视频文件,用户点击该视频文件就可以实现播放。而本发明下载完成后,保存的是目标视频的多个视频片段,对于用户而言,可以通过点击本地m3u8文件来实现播放。目前各大播放器基本都支持m3u8文件的播放,比如,MPlayer、VLC、ffplayer等。由此可见,通过本地m3u8文件对视频片段进行播放也是极为便利的,不会产生额外操作。
[0057]进一步地,根据上述本地m3u8文件,还可以将存储在指定位置的视频片段合并成目标视频。
[0058]本发明是将目标视频的各个视频片段分别下载并保存,也就是说下载好的目标视频是多个视频片段的集合,由于文件数量较多,不便于拷贝,所以可以依据上述本地m3u8文件将下载好的视频片段合成完整的目标视频。
[0059]在本实施例的一种具体实现中,依据本地m3u8文件中各个视频片段的顺序,将各个视频片段合并为完整的目标视频。其中,将各个视频片段合并为一个视频可以依据已知的视频合并方法。比如,通过视频格式编码规范对视频进行合并解码,再根据目标格式编码规范重新合并编码。以HLS协议为例,视频片段是ts格式,经过合并后可以输出一个ts格式的大视频文件。通过对视频片段的合并,可以方便用户对目标视频的拷贝等操作。
[0060]实施例四
[0061]本实施例在实施例一的基础上,将m3u8文件保存到本地,并在该m3u8文件中标记已完成下载的URL,在重新启动目标视频的下载时,根据本地保存的上述m3u8文件中未做标记的URL继续下载。[0062]本实施例提供了一种目标视频继续下载的方法。在实际应用中,会出现一部电影没有下载完毕,但用户关闭了电脑,在电脑重新开启后,用户还想要继续下载的情况。或者是由于网络故障,导致下载中断,在故障恢复时,也需要继续下载。要实现继续下载,就需要知道哪些视频片段已经下载完毕,哪些视频片段还没有下载。本实施例设计将m3u8文件保存到本地,并在该m3u8文件中标记已完成下载的视频片段,这样在重新启动下载的时候,就可以依据该m3u8文件中未做标记的URL下载还未下载的视频片段。
[0063]具体地,可以在m3u8文件的各个视频片段的URL后面加上预设的字段用来标记,如,增加字段&d0wnl0aded用来表明该视频片段已经下载完毕。那么,在重新启动目标视
频的下载时,只需要下载上述m3u8文件中未标记&downloaded字段的视频片段。当然,也可以采取其他的方式,比如,在本地建立下载进度表。
[0064]
【权利要求】
1.一种基于HLS协议的视频下载方法,其特征在于,所述方法包括: 51.从云服务器获取下载目标视频的m3u8文件; 52.判断所述m3u8文件中的待下载URL对应的视频片段能否下载:能则转至步骤S3,否则转至步骤S4 ; 53.根据所述待下载URL下载对应的视频片段,并将下载到的各个视频片段分别存储在本地磁盘中的指定位置上; 54.以所述待下载URL的下一个URL为新的待下载URL,转至步骤S2。
2.根据权利要求1所述的方法,其特征在于, 步骤S2中,判断所述m3u8文件中的待下载URL对应的视频片段能否下载的过程包括:判断所述m3u8文件中的待下载URL对应的视频片段在预定的时间内是否下载完成。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括: 55.在所有能下载的视频片段下载完成后,下载步骤S2中未能下载的视频片段。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括: 56.根据视频片段所在的指定位置的路径,生成所述目标视频的本地m3u8文件。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括: 57.将所述m3u8文件保存到本地,并在所述m3u8文件中标记已完成下载的URL,在重新启动所述目标视频的下载时,根据本地保存的所述m3u8文件中未做标记的URL继续下载。
6.一种基于HLS协议的视频下载装置,其特征在于,所述装置包括: 获取模块,用于从云服务器获取下载目标视频的m3u8文件; 判断模块,用于判断所述m3u8文件中的待下载URL对应的视频片段能否下载;若能,则将判断结果发送至下载模块;若不能,则以所述待下载URL的下一个URL为新的待下载URL进行判断; 下载模块,用于在所述m3u8文件中的待下载URL对应的视频片段能下载时,根据所述待下载URL下载对应的视频片段,并将下载到的各个视频片段分别存储在本地磁盘中的指定位置上。
7.根据权利要求6所述的装置,其特征在于,判断模块判断所述m3u8文件中的待下载URL对应的视频片段能否下载的过程包括:判断所述m3u8文件中的待下载URL对应的视频片段在预定的时间内是否下载完成。
8.根据权利要求6所述的装置,其特征在于,所述下载模块,进一步用于在所有能下载的视频片段下载完成后,下载经判断未能下载的视频片段。
9.根据权利要求6所述的装置,其特征在于,所述装置还包括: 生成模块,用于根据视频片段所在的指定位置的路径,生成所述目标视频的本地m3u8文件。
10.根据权利要求6所述的装置,其特征在于, 所述下载模块,进一步用于将所述m3u8文件保存到本地,并在所述m3u8文件中标记已完成下载的URL,在重新启动所述目标视频的下载时,根据本地保存的所述m3u8文件中未做标记的URL继续下载。
【文档编号】H04N21/438GK103702176SQ201310665514
【公开日】2014年4月2日 申请日期:2013年12月9日 优先权日:2013年12月9日
【发明者】苍鹏, 李强, 任海林 申请人:乐视致新电子科技(天津)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1