基于HLS协议的网络直播在故障恢复后的播放方法及系统与流程

文档序号:17602201发布日期:2019-05-07 20:26阅读:422来源:国知局
基于HLS协议的网络直播在故障恢复后的播放方法及系统与流程

本发明涉及hls协议流媒体下载及播放领域,具体涉及一种基于hls协议的网络直播在故障恢复后的播放方法及系统。



背景技术:

随着数字技术和互联网技术的发展,流媒体服务的需求也越来越多。http协议(hypertexttransferprotocol,超文本传输协议)具有基础设施完善、实现简单、部署快、代理服务器强等特点,基于http实现的hls协议(httplivestreaming,苹果公司提出的基于http的流媒体网络传输协议)越来越多的被应用到流媒体的直播业务和点播业务中。hls协议的特点是将容量巨大的连续媒体数据分割为数量众多的ts(transportstream,合成传输流)分片进行传递,客户端不断的请求下载ts分片实现流畅的播放。在hls协议规范中,m3u8列表中会有每个ts分片时长(通过时长#extinf字段标识,一个ts分片的时长通常为10s,每个ts分片的时长可相同或不同)和对应的序号。

hls协议在播放过程中,客户端会根据从服务端上请求的m3u8列表中的分片序号,请求下载ts分片播放。直播情况下,服务端上的m3u8列表会不断的进行更新,进而使得客户端实际需要下载播放的ts分片会随着m3u8列表的更新而更新(即客户端需要定期更新m3u8列表)。

基于hls协议的网络直播过程中出现网络故障时,客户端会无法请求服务端上最新的m3u8列表,也无法下载ts分片;网络故障恢复后,客户端按照故障前待下载或正在下载的ts分片序号请求下载。但是,若网络故障的时长大于服务端上的m3u8列表的更新时长,则会出现客户端请求下载的ts分片不在服务端的m3u8列表中;此时若继续请求m3u8列表中不存在的ts分片,则会造成额外的耗时,不利于网络故障恢复的及时响应,降低了用户体验。



技术实现要素:

针对现有技术中存在的缺陷,本发明解决的技术问题为:如何节省不必要的请求耗时开销,以此尽可能快速的恢复播放,进而提高用户体验。

为达到以上目的,本发明提供的基于hls协议的网络直播在故障恢复后的播放方法,包括以下步骤:

s1:客户端向服务端请求m3u8列表至本地,m3u8列表中包括若干ts分片和每个ts分片的时长;

s2:客户端根据本地m3u8列表下载ts分片;

s3:客户端将下载的ts分片进行解码和显示;

s4:客户端定期更新本地m3u8列表;

s5:在执行s2至s4的过程中,当发生网络故障、且网络故障恢复后,客户端获取需要下载的ts分片的时长t3,若t-t4≥t3,则更新本地m3u8列表,其中t代表网络故障发生时长,t4代表客户端下载请求时长。

在上述技术方案的基础上,s1包括以下步骤:客户端根据播放地址向服务端发起m3u8列表请求后,对服务端返回的信息进行解析,得到一级m3u8文件,根据一级m3u8文件向服务端请求m3u8列表;对m3u8列表进行解析,得到ts分片索引,索引中包括每个ts分片的序号和时长。

在上述技术方案的基础上,s2包括以下步骤:客户端创建ts分片下载缓存;客户端从m3u8列表获取1个需要下载的ts分片后,当ts分片下载缓存中的空闲缓存与当前ts分片适配时,下载当前ts分片。

在上述技术方案的基础上,s3包括以下步骤:解析ts分片的pid和音视频格式后,根据解析的pid和音视频格式,设置对应的底层解码器来显示ts分片。

在上述技术方案的基础上,s5中所述网络故障发生时长t的计算方式包括:客户端检测到发生网络故障时,记录网络故障发生时间t1,网络故障修复后,记录网络故障恢复时间t2,t=t2-t1。

本发明提供的基于hls协议的网络直播在故障恢复后的播放系统,包括设置于客户端上的控制模块、hls协议处理模块、ts数据处理模块和网络检测模块;

控制模块用于:向hls协议处理模块发送m3u8列表下载信号,收到hls协议处理模块返回的ts分片下载信号后,向ts数据处理模块发送ts数据显示信号;向网络检测模块发送网络检测信号,收到网络检测模块返回的m3u8列表更新信号后,向hls协议处理模块发送m3u8列表更新信号;

hls协议处理模块用于:收到m3u8列表下载信号后,向服务端请求m3u8列表并定期更新m3u8列表,m3u8列表中包括若干ts分片和每个ts分片的时长;根据本地m3u8列表下载ts分片后,向控制模块返回ts分片下载信号;收到m3u8列表更新信号后,即时更新m3u8列表;

ts数据处理模块用于:收到ts数据显示信号后,将hls协议处理模块下载的ts分片进行解码和显示;

网络检测模块用于:收到网络检测信号后,检测网络状态,当发生网络故障、且网络故障恢复后,获取需要下载的ts分片的时长t3,若t-t4≥t3,则向控制模块返回m3u8列表更新信号,其中t代表网络故障发生时长,t4代表客户端下载请求时长。

在上述技术方案的基础上,所述hls协议处理模块向服务端请求m3u8列表的工作流程包括:根据播放地址向服务端发起m3u8列表请求后,对服务端返回的信息进行解析,得到一级m3u8文件,根据一级m3u8文件向服务端请求m3u8列表;对m3u8列表进行解析,得到ts分片索引,索引中包括每个ts分片的序号和时长。

在上述技术方案的基础上,该系统还包括设置于客户端上的缓存模块;

缓存模块用于:创建ts分片下载缓存,在hls协议处理模块根据本地m3u8列表下载ts分片之前,检测ts分片下载缓存中的空闲缓存是否与hls协议处理模块需要下载的ts分片适配;

所述控制模块还用于:当空闲缓存与需要下载的ts分片适配时,通知hls协议处理模块下载ts分片。

在上述技术方案的基础上,所述ts数据处理模块的工作流程包括:解析ts分片的pid和音视频格式后,根据解析的pid和音视频格式,设置对应的底层解码器来显示ts分片。

在上述技术方案的基础上,所述网络检测模块计算网络故障发生时长t的工作流程包括:检测到发生网络故障时,记录网络故障发生时间t1,网络故障修复后,记录网络故障恢复时间t2,t=t2-t1。

与现有技术相比,本发明的优点在于:

由此可知,本发明在基于hls协议的网络直播的网络故障恢复后,能够根据自主创作的时长判断方式,来确定客户端即将下载的ts分片是否在服务端的m3u8列表中;若不存在,则客户端直接更新m3u8列表。因此,本发明不会存在现有技术中继续请求m3u8列表中不存在的ts分片的情形,进而节省了不必要的请求耗时开销,提高了网络故障后的恢复播放速度,随之也提高了用户体验。

与此同时,需要说明的是,在本申请以前没有任何文献公开了本发明自主创作的时长判断方式,而且对于本领域普通技术人员而言,网络故障恢复后节省请求耗时开销的方式一般为:优化系统性能,没有动机,来想到本发明的时长判断方式。

附图说明

图1为本发明实施例中基于hls协议的网络直播在故障恢复后的播放方法的流程图;

图2为本发明实施例中s1的流程图;

图3为本发明实施例中s2的流程图;

图4为本发明实施例中基于hls协议的网络直播在故障恢复后的播放系统的连接框图。

具体实施方式

以下结合附图及实施例对本发明作进一步详细说明。

参见图1所示,本发明实施例中的基于hls协议的网络直播在故障恢复后的播放方法,包括以下步骤:

s1:需要进行基于hls协议的网络直播时,客户端向服务端请求m3u8列表至本地,m3u8列表中包括若干ts分片和每个ts分片的时长,转到s2。

s2:客户端根据本地m3u8列表下载ts分片,转到s3。

s3:客户端将下载的ts分片进行解码和显示,转到s4。

s4:客户端根据hls协议规则向服务端请求m3u8列表至本地(即客户端定期更新本地m3u8列表,定期的时长根据hls协议规则设置,参见背景技术可知,客户端定期更新本地m3u8列表为现有技术),转到s2。

s5:在执行s2至s4的过程中,当发生网络故障、且网络故障恢复后,获取需要下载的ts分片(故障前正在下载的ts分片、或者故障前刚好下载完成故障后即将下载的ts分片)的时长t3,参见背景技术可知,不同ts分片的时长可能不同,因此t3的获取方式不能设置为默认值,而需要在s1中的本地m3u8列表中查找到需要下载的ts分片后,再获取该ts分片的时长。

判断是否t-t4≥t3,其中t代表网络故障发生时长,t4代表客户端下载请求时长,t4预先根据经验设置,设置规则为t4大于等于保护时长,保护时长为从客户端向服务端请求下载ts分片,至开始下载ts分片所需的时长,如此设置能够避免出现客户端请求下载ts分片时,需要下载的ts分片在请求过程中被服务端所更新,进而导致客户端请求下载的ts分片不存在于服务端中更新的m3u8列表中的情况。

若是,说明客户端需要下载的ts分片已不在服务端的m3u8列表中,此时客户端更新本地m3u8列表后转到s2;

否则说明即使在客户端下载请求时长后,客户端需要下载的ts分片仍在服务端的m3u8列表中,此时无需更新m3u8列表,可直接转到s2进行正常下载。

由此可知,本发明在基于hls协议的网络直播的网络故障恢复后,能够根据自主创作的时长判断方式,来确定客户端即将下载的ts分片是否在服务端的m3u8列表中;若不存在,则客户端直接更新m3u8列表。因此,本发明不会存在现有技术中继续请求m3u8列表中不存在的ts分片的情形,进而节省了不必要的请求耗时开销,提高了网络故障后的恢复播放速度,随之也提高了用户体验。

与此同时,需要说明的是,在本申请以前没有任何文献公开了本发明自主创作的时长判断方式,而且对于本领域普通技术人员而言,网络故障恢复后节省请求耗时开销的方式一般为:优化系统性能,没有动机,来想到本发明的时长判断方式。

优选的,参见图2所示,s1包括以下步骤:

s101:客户端收到播放命令后,根据播放命令中的播放地址向服务端发起m3u8列表请求,转到s102。

s102:客户端根据hls解析规则,对服务端返回的信息进行解析,得到一级m3u8文件;根据一级m3u8文件中的内容向服务端请求二级m3u8文件(即m3u8列表),转到s103。

s103:客户端根据hls解析规则,对二级m3u8文件进行解析,得到ts分片索引,索引中包括每个ts分片的序号和时长,转到s2。

优选的,参见图3所示,s2包括以下步骤:

s201:客户端创建ts分片下载缓存和下载缓存管理机制,转到s202。

s202:客户端从m3u8列表获取1个需要下载的ts分片,转到s203。

s203:客户端根据下载缓存管理机制,判断ts分片下载缓存中的空闲缓存是否与当前ts分片适配(空闲缓存的空间能够容纳ts分片则符合适配标准),若是,转到s204,否则重新执行s203,以等待空闲缓存容量增大。

s204:客户端下载当前ts分片,转到s3。

本实施例中每次下载ts分片之前,均需要执行s202步骤。

由此可知,本实施例在下载ts分片之前,会先检测空闲缓存是否足够,进而提高了网络直播的稳定性。

优选的,s3包括以下步骤:对ts分片进行预处理后,解析ts分片的pid(ts流的中唯一识别标志)和音视频格式,根据解析的pid和音视频格式,设置对应的底层解码器来显示ts分片。

优选的,s5中网络故障发生时长t的计算方式为:客户端检测到发生网络故障时,记录网络故障发生时间t1,网络故障修复后,记录网络故障恢复时间t2,t=t2-t1。

参见图4所示,本发明提供的基于hls协议的网络直播在故障恢复后的播放系统,包括设置于客户端上的控制模块、hls协议处理模块、ts数据处理模块、网络检测模块和缓存模块。

控制模块用于:

(1)向hls协议处理模块发送m3u8列表下载信号,收到hls协议处理模块返回的ts分片下载信号后,向ts数据处理模块发送ts数据显示信号;

(2)向网络检测模块发送网络检测信号,收到网络检测模块返回的m3u8列表更新信号后,向hls协议处理模块发送m3u8列表更新信号;

(3)当空闲缓存与需要下载的ts分片适配时,通知hls协议处理模块下载ts分片。

hls协议处理模块用于:收到m3u8列表下载信号后,向服务端请求m3u8列表并定期更新m3u8列表,m3u8列表中包括若干ts分片和每个ts分片的时长;根据本地m3u8列表下载ts分片后,向控制模块返回ts分片下载信号;收到m3u8列表更新信号后,即时更新m3u8列表。

hls协议处理模块向服务端请求m3u8列表的工作流程包括:根据播放地址向服务端发起m3u8列表请求后,对服务端返回的信息进行解析,得到一级m3u8文件,根据一级m3u8文件向服务端请求m3u8列表;对m3u8列表进行解析,得到ts分片索引,索引中包括每个ts分片的序号和时长。

缓存模块用于:创建ts分片下载缓存,在hls协议处理模块根据本地m3u8列表下载ts分片之前,检测ts分片下载缓存中的空闲缓存是否与hls协议处理模块需要下载的ts分片适配。

ts数据处理模块用于:收到ts数据显示信号后,将hls协议处理模块下载的ts分片进行解码和显示;具体工作流程包括:解析ts分片的pid和音视频格式后,根据解析的pid和音视频格式,设置对应的底层解码器来显示ts分片。

网络检测模块用于:收到网络检测信号后,检测网络状态,当发生网络故障、且网络故障恢复后,获取需要下载的ts分片的时长t3,若t-t4≥t3,则向控制模块返回m3u8列表更新信号,其中t代表网络故障发生时长,t4代表客户端下载请求时长。网络故障发生时长t的计算流程包括:检测到发生网络故障时,记录网络故障发生时间t1,网络故障修复后,记录网络故障恢复时间t2,t=t2-t1。

需要说明的是:本发明实施例提供的系统在进行模块间通信时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将系统的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。

进一步,本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

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