基于HLS协议的播放器优化方法及系统、存储介质及终端与流程

文档序号:18471992发布日期:2019-08-20 20:24阅读:343来源:国知局
基于HLS协议的播放器优化方法及系统、存储介质及终端与流程

本发明涉及播放器的技术领域,特别是涉及一种基于hls协议的播放器优化方法及系统、存储介质及终端。



背景技术:

随着互联网的兴起,互联网电视、电视机顶盒等设备已经作为一种基础设施深入到各家各户。用户通过电视观看互联网上的视频节目,从而为生活带来很多乐趣。然而,由于互联网的网络环境千差万别,导致稳定性不如有线网那样稳定。因此,为了保证用户观看视频的流畅性,几乎每家硬件厂商都会研发出针对自身硬件的播放器。而这些播放器性能上千差万别,有的甚至直接基于开源代码修改而来。

现有技术中,使用较广泛的是基于ijk的开源播放器。由于是开源播放器,其适应各种各样的流的情况。但是,由于是通用的开源播放器,对于使用场景没有限制,因此就无法针对某种场景或者某种流来进行优化定制,导致所有的播放器的性能差异不大。

目前,为了应对带宽的差别,很多播放器让用户在观看视频的时候自主手动选择观看质量,如流畅、高清、超清等,然后根据用户选择质量来播放不同码率的视频,如360p、480p、720p。但是这种方法只能适用于带宽不会发生变化的情况。如果带宽进行波动,而用户又选择了一个较高的码率,这时播放器会频繁出现卡顿的情况。



技术实现要素:

鉴于以上所述现有技术的缺点,本发明的目的在于提供一种基于hls协议的播放器优化方法及系统、存储介质及终端,能够基于当前带宽选择合适的码率进行播放,从而保证了视频播放的流畅性,极大地提升了用户体验。

为实现上述目的及其他相关目的,本发明提供一种基于hls协议的播放器优化方法,包括以下步骤:当播放器启动播放时,判断基于hls协议的当前视频流是否可以进行向前探测;若是,对所述当前视频流进行向前探测以获取预设时长的传输流媒体分片文件;基于当前码率下载所述当前视频流的传输流媒体分片文件;基于带宽变化更换所述当前码率,并基于更换后的当前码率下载所述当前视频流的传输流媒体分片文件。

于本发明一实施例中,基于传输流媒体分片文件的命名规则向前探测所述当前视频流的传输流媒体分片文件。

于本发明一实施例中,下载所述当前视频流的传输流媒体分片文件时,首先下载所述当前视频流的索引文件,再基于所述索引文件下载对应的传输流媒体分片文件。

于本发明一实施例中,基于带宽变化更换所述当前码率时,采用逐阶递增的方式从低码率更换至高码率。

于本发明一实施例中,基于带宽变化更换所述当前码率时,从高码率更换至低码率时,首先将所述高码率更换为最低码率,再将所述最低码率更换为所述低码率。

于本发明一实施例中,基于带宽变化更换所述当前码率时,至少下载预设数量的当前码率对应的传输流媒体分片文件后再更换当前码率。

于本发明一实施例中,基于带宽变化更换所述当前码率时,若缓存不足,直接将所述当前码率降低至与当前带宽匹配的码率。

对应地,本发明提供一种基于hls协议的播放器优化系统,包括向前探测模块、下载模块和更换模块;

所述向前探测模块用于当播放器启动播放时,判断基于hls协议的当前视频流是否可以进行向前探测;若是,对所述当前视频流进行向前探测以获取预设时长的传输流媒体分片文件;

所述下载模块用于基于当前码率下载所述当前视频流的传输流媒体分片文件;

所述更换模块用于基于带宽变化更换所述当前码率,并基于更换后的当前码率下载所述当前视频流的传输流媒体分片文件。

本发明提供一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述的基于hls协议的播放器优化方法。

最后,本发明提供一种终端,包括:处理器及存储器;

所述存储器用于存储计算机程序;

所述处理器用于执行所述存储器存储的计算机程序,以使所述终端执行上述的基于hls协议的播放器优化方法。

如上所述,本发明所述的基于hls协议的播放器优化方法及系统、存储介质及终端,具有以下有益效果:

(1)能够根据当前带宽选择最合适的码率来进行播放,通过码率自适应来避免播放时的卡顿现象;

(2)对于直播流采用了向前探测技术,当播放器开始播放时探测直播流之前已经产生的传输流(transportstream,ts)媒体分片文件,并下载已经产生的ts媒体分片文件内容添加到缓存中,从而抵御由于网络抖动问题造成的播放器的播放卡顿情况;

(3)通过延时播放,使得基于hls协议的播放器牺牲一定的实时性,而实现了流畅性,对极大地提升了直播电视、电视机顶盒的用户的观看体验。

附图说明

图1显示为本发明的基于hls协议的播放器优化方法于一实施例中的流程图;

图2显示为本发明的基于hls协议的播放器优化系统于一实施例中的结构示意图;

图3显示为本发明的终端于一实施例中的结构示意图。

元件标号说明

21向前探测模块

22下载模块

23更换模块

31处理器

32存储器

具体实施方式

以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。

需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。

本发明的基于hls协议的播放器优化方法及系统、存储介质及终端能够基于当前带宽自适应选择合适的码率进行播放,同时采用延时缓存和预加载技术保证了视频播放的流畅性,避免了视频播放过程中的卡顿现象,极大地提升了用户的观看体验,适用于智能电视和电视盒子等应用场景。

如图1所示,于一实施例中,本发明的基于hls协议的播放器优化方法包括以下步骤:

步骤s1、当播放器启动播放时,判断基于hls协议的当前视频流是否可以进行向前探测;若是,对所述当前视频流进行向前探测以获取预设时长的传输流媒体分片文件。

具体地,hls(httplivestreaming)是由苹果公司提出的基于http的流媒体网络传输协议。它的工作原理是把整个流分成一个个小的基于http的文件来下载,每次只下载一些。当媒体流正在播放时,客户端可以选择从许多不同的备用源中以不同的速率下载同样的资源,允许流媒体会话适应不同的数据速率,其包括一个m3u8索引文件,ts媒体分片文件和key加密串文件。

在hls协议下,直播视频流的m3u8索引文件的示例如下:

#extm3u

#ext-x-version:3

#ext-x-targetduration:2

#ext-x-media-sequence:1711

#extinf:2.000000,

2300/20181030/20181030t190311.ts

#extinf:2.000000,

2300/20181030/20181030t190313.ts

#extinf:2.000000,

2300/20181030/20181030t190315.ts

#extinf:2.000000,

2300/20181030/20181030t190317.ts

#extinf:2.000000,

2300/20181030/20181030t190319.ts

在hls协议下,点播视频流的m3u8索引文件的示例如下:

#extm3u

#ext-x-version:3

#ext-x-targetduration:2

#ext-x-media-sequence:1711

#extinf:2.000000,

2300/20181030/20181030t190311.ts

#extinf:2.000000,

2300/20181030/20181030t190313.ts

#extinf:2.000000,

2300/20181030/20181030t190315.ts

#extinf:2.000000,

2300/20181030/20181030t190317.ts

#extinf:2.000000,

2300/20181030/20181030t190319.ts

#endlist

由上可知,直播视频流和点播视频流最大的不同在于:点播视频流在m3u8的最后结尾处会存在#endlist的字样,其它部分则完全相同。

由于点播视频流是将所有ts媒体分片文件全保存在m3u8文件中,故不存在网络抖动而造成播放不稳定的情况。故本发明的基于hls协议的播放器优化方法主要针对直播视频流来进行。从上述直播视频流的m3u8可以看出,每个ts文件是2秒,那么上述m3u8文件中会存在10秒左右的延时(2秒*5片=10秒)。

根据hls协议的视频流一般会存在好几个不同的码率,如流畅、高清、超清,针对不同的码率有不同的m3u8文件。码率就是数据传输时单位时间传送的数据位数。带宽就是传输速率就是每秒钟传输的最大字节数。不同的带宽对应不同的码率。故播放器需要根据当前的网络带宽实时获取当前对应的m3u8文件,从而可以获取相应的ts媒体分片文件。

播放器进行视频播放时,ts媒体分片文件的缓存数量决定视频播放是否会出现卡顿的关键。在直播过程中,播放器尽可能获取少数几个ts媒体分片文件。这是因为直播过程中是无法获知后续的ts媒体分片文件的名称。从上述的m3u8文件内容可知,m3u8文件的文件格式和文件名称具有一定的规律。故可推算出在前的m3u8文件的文件格式和文件名称。虽然这种推算存在错误的可能,但是按照这种格式所推算出的文件名称至少有95%以上的正确性。因此,本发明的基于hls协议的播放器优化采用延时缓存方式,预加载向前探测的ts媒体分片文件。具体地,当播放器启动播放时,判断基于hls协议的当前视频流是否可以进行向前探测。如果可以进行向前探测,则基于ts媒体分片文件的命名规则,对所述当前视频流进行向前探测以获取预设时长的传输流媒体分片文件,如向前探测6s的ts媒体分片文件。例如,名称为2300/20190306/20190306t113028.ts的ts文件,如果间隔时间为2秒,那么可以向前推测得到的ts媒体分片文件名为:

2300/20190306/20190306t113026.ts

2300/20190306/20181030t113024.ts

2300/20190306/20181030t113022.ts

…………..

将向前探测的ts媒体分片文件进行预加载,存储至缓存中。当网络不好时依然可以在一定时间内进行正常播放,从而实现了抵御网络抖动的目的。

需要说明的是,如果不能进行向前探测,则不执行任何操作。

步骤s2、基于当前码率下载所述当前视频流的传输流媒体分片文件。

具体地,根据当前带宽自适应选择匹配的码率,从而下载所述当前视频流的传输流媒体分片文件。其中,下载所述当前视频流的传输流媒体分片文件时,首先下载所述当前视频流的索引文件,再基于所述索引文件下载对应的传输流媒体分片文件。

步骤s3、基于带宽变化更换所述当前码率,并基于更换后的当前码率下载所述当前视频流的传输流媒体分片文件。

具体地,若当前带宽发生变化,则需要根据带宽的变化情况进行当前码率的更换,以保证视频播放的流畅性。其中,更换码率需要遵循以下规则:

(1)基于带宽变化更换所述当前码率时,采用逐阶递增的方式从低码率更换至高码率。也就是说,码率在上升过程中,必须一级一级增。设定视频流存在3个码率,即700码率、1300码率、2300码率。例如要从700码率到2300码率时必须依次经过700码率、1300码率、2300码率。具体地,采用ts(a)_b表示码率,ts表示为ts媒体分片文件,a表示序号,b表示ts媒体分片文件的码率。用户下载ts文件所对应的码率变化如下:ts(1)_700码率、ts(2)_700码率、ts(3)_1300码率、ts(4)_1300码率、ts(5)_2300码率、ts(6)_2300码率.......ts(n)_2300码率。

(2)基于带宽变化更换所述当前码率时,至少下载预设数量的当前码率对应的传输流媒体分片文件后再更换当前码率。也就是说,尽量保持当前码率,对码率变化采取惰性原则。变化至少出现预设数量个ts媒体分片文件后才能进行变化。优选地,所述预设数量为2。例如,当带宽只满足用户播放1300码率时,用户下载ts媒体分片文件所对应的码率变化如下:ts(1)_700码率、ts(2)_700码率、ts(3)_1300码率、ts(4)_1300码率、ts(5)_1300码率、ts(6)_1300码率...ts(n)_1300码率。

(3)基于带宽变化更换所述当前码率时,若缓存不足,直接将所述当前码率降低至与当前带宽匹配的码率。具体地,当下载缓存不足时,惰性原则将不起作用,而是直接降低当前码率到最合适的码率。例如,当用户正在进行2300码率流畅播放,网络出现抖动只能进行700码率的播放,缓存不足时码率变化如下:ts(n)_2300码率、ts(n+1)_2300码率、ts(n+2)_700码率、ts(n+3)_700码率...ts(n+n)_700码率。

(4)基于带宽变化更换所述当前码率时,从高码率更换至低码率时,首先将所述高码率更换为最低码率,再将所述最低码率更换为所述低码率。例如,当用户网络出现抖动,从可以流畅观看2300码率掉到能流畅观看1300码率时码率变化如下:ts(n)_2300码率、ts(n+1)_2300码率、ts(n+2)_700码率、ts(n+3)_700码率、ts(n+4)_1300码率、ts(n+5)_1300码率....ts(n+n)_1300码率。当用户网络出现抖动,从可以流畅观看2300码率掉到能流畅播放1300码率后,又回到可以流畅播放2300码率时码率变化如下:ts(n)_2300码率、ts(n+1)_2300码率、ts(n+2)_700码率、ts(n+3)_700码率、ts(n+4)_1300码率、ts(n+5)_1300码率....ts(n+n)_1300码率、ts(n+n+1)_2300码率、ts(n+n+2)_2300码率...ts(n+n+n)_2300码率。

如图2所示,于一实施例中,本发明的基于hls协议的播放器优化系统包括向前探测模块21、下载模块22和更换模块23。

所述向前探测模块21用于当播放器启动播放时,判断基于hls协议的当前视频流是否可以进行向前探测;若是,对所述当前视频流进行向前探测以获取预设时长的传输流媒体分片文件;

所述下载模块22与所述向前探测模块21相连,用于基于当前码率下载所述当前视频流的传输流媒体分片文件;

所述更换模块23与所述下载模块22相连,用于基于带宽变化更换所述当前码率,并基于更换后的当前码率下载所述当前视频流的传输流媒体分片文件。

其中,上述向前探测模块21、下载模块22和更换模块23的结构和原理均与上述基于hls协议的播放器优化方法一一对应,故在此不再赘述。

需要说明的是,应理解以上装置的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现,也可以全部以硬件的形式实现,还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。例如:x模块可以为单独设立的处理元件,也可以集成在上述装置的某一个芯片中实现。此外,x模块也可以以程序代码的形式存储于上述装置的存储器中,由上述装置的某一个处理元件调用并执行以上x模块的功能。其它模块的实现与之类似。这些模块全部或部分可以集成在一起,也可以独立实现。这里所述的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(applicationspecificintegratedcircuit,简称asic),一个或多个微处理器(digitalsingnalprocessor,简称dsp),一个或者多个现场可编程门阵列(fieldprogrammablegatearray,简称fpga)等。当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,如中央处理器(centralprocessingunit,简称cpu)或其它可以调用程序代码的处理器。这些模块可以集成在一起,以片上系统(system-on-a-chip,简称soc)的形式实现。

本发明的存储介质上存储有计算机程序,该程序被处理器执行时实现上述的基于hls协议的播放器优化方法。所述存储介质包括:rom、ram、磁碟、u盘、存储卡或者光盘等各种可以存储程序代码的介质。

如图3所示,于一实施例中,本发明的终端包括:处理器31及存储器32。

所述存储器32用于存储计算机程序。

所述存储器32包括:rom、ram、磁碟、u盘、存储卡或者光盘等各种可以存储程序代码的介质。

所述处理器31与所述存储器32相连,用于执行所述存储器32存储的计算机程序,以使所述终端执行上述的基于hls协议的播放器优化方法。

优选地,所述处理器31可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(digitalsignalprocessor,简称dsp)、专用集成电路(applicationspecificintegratedcircuit,简称asic)、现场可编程门阵列(fieldprogrammablegatearray,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

综上所述,本发明的基于hls协议的播放器优化方法及系统、存储介质及终端能够根据当前带宽选择最合适的码率来进行播放,通过码率自适应来避免播放时的卡顿现象;对于直播流采用了向前探测技术,当播放器开始播放时探测直播流之前已经产生的ts媒体分片文件,并下载已经产生的ts媒体分片文件内容添加到缓存中,从而抵御由于网络抖动问题造成的播放器的播放卡顿情况;通过延时播放,使得基于hls协议的播放器牺牲一定的实时性,而实现了流畅性,对极大地提升了直播电视、电视机顶盒的用户的观看体验。因此,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。

上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。

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