本发明涉及互联网多媒体领域,具体涉及一种基于hls协议的时移优化方法及系统。
背景技术:
hls(httplivestreaming),apple的动态码率自适应技术。主要用于pc和apple终端的音视频服务。包括一个m3u8的索引文件,ts媒体分片文件和key加密串文件。
hls时移业务,是基于hls直播的基础上,通过终端操作,可以让用户观看到过去一段时间的直播内容的一种业务形式。比较简单的方法是,把时移时间段内所有的流媒体分片都缓存在同一个播放列表中,服务端只用维护一个索引文件,并实时更新。客户端以相当于单个媒体流时长为频率,刷新索引文件。但此方法存在“索引文件不断刷新导致带宽占用多以及播放响应不够及时”的问题。由此,我们需要针对hls时移播放做一些优化。
技术实现要素:
针对现有技术中存在的缺陷,本发明的目的在于提供一种能够减少起播时传输时移索引文件所占带宽和所耗时间的基于hls协议的时移优化方法。
为达到以上目的,本发明采取的技术方案是:
一种基于hls协议的时移优化方法,该方法包括以下步骤:
s1.从预设时间点开始,以定长的媒体段时间长度作为分片长度,计数每个流媒体分片的分片序列id;
s2.保存时移范围内的所有流媒体分片并分组,将每连续的n片流媒体分片分成一组,每一组流媒体分片均形成一个时移索引文件;
s3.客户端选择hls直播节目进行播放,请求直播索引文件;
s4.客户端通过播控操作使hls直播节目进入时移状态;
s5.客户端在直播索引文件的地址的基础上附加时移附加信息,通过时移附加信息中的当前播放的流媒体分片的分片序列id和播放倍率信息,向http流媒体服务器请求时移索引文件;
s6.http流媒体服务器接收时移索引文件请求,并解析时移附加信息,根据解析结果将对应的时移索引文件发送给客户端;
s7.客户端请求并播放接收到的时移索引文件中的流媒体分片。
在上述技术方案的基础上,当播放中的流媒体分片剩余时间到预设值时,重复执行步骤s5至s7,客户端周期性请求下一时移索引文件并播放下一时移索引文件中的流媒体分片,直至播放终止。
在上述技术方案的基础上,所述客户端在直播索引文件的地址的基础上附加当前播放的流媒体分片的分片序列id和播放倍率信息,生成url向http流媒体服务器请求时移索引文件。
在上述技术方案的基础上,http流媒体服务器解析时移附加信息,若解析结果中播放倍率为负数,http流媒体服务器把包含当前播放的流媒体分片的分片序列id减1的流媒体分片的时移索引文件发送给客户端;若解析结果中播放倍率为正数,http流媒体服务器把包含当前播放的流媒体分片的分片序列id加1的流媒体分片的时移索引文件发送给客户端。
在上述技术方案的基础上,客户端根据时移索引文件得到时移总时长信息,参照当前时间计算出时移开始时间,然后请求http流媒体服务器所发送的时移索引文件中的流媒体分片并播放,同时还缓存该时移索引文件,形成本地时移切片列表。
在上述技术方案的基础上,客户端播放完时移索引文件中的一个流媒体分片后,判断本地是否缓存有下一个流媒体分片,若是,则继续播放下一个流媒体分片,若否,则判断是到了时移左边界还是时移右边界,若到了时移左边界,则恢复为普通一倍速时移播放,若到了时移右边界,则切换为直播状态。
在上述技术方案的基础上,客户端通过快进、快退或暂停使hls直播节目进入时移状态。
与此同时,本发明的目的还在于提供一种能够减少起播时传输时移索引文件所占带宽和所耗时间的基于hls协议的时移优化系统。
为达到以上目的,本发明采取的技术方案是:
一种基于hls协议的时移优化系统,包括:
hls流媒体服务子系统,其包括编码服务器、切片服务器和http流媒体服务器,所述编码服务器用于将音频数据和视频数据进行编码,所述切片服务器用于将编码服务器输出的媒体流存储为多个流媒体分片,所述http流媒体服务器用于响应时移索引文件请求和播放流媒体分片请求;以及
客户端,其用于向http流媒体服务器发送时移索引文件请求,所述客户端得到时移索引文件后,还用于向http流媒体服务器请求并播放所述时移索引文件里面的切片文件。
与现有技术相比,本发明的优点在于:
(1)本发明中的基于hls协议的时移优化方法,对流媒体分片进行分组后,形成了多个时移索引文件,和传统的只有一个时移索引文件相比,缩小了时移传送粒度,减少传输时移索引文件所占带宽和所耗时间,有利于提高起播速度。
(2)本发明中的基于hls协议的时移优化方法,在播放的过程中,相比传统的时移索引文件频繁刷新给流媒体服务器和网络带宽造成的压力,同样刷新频率,本发明使用分片较少的时移索引文件所占带宽要小得多。而如果传统的时移索引文件为了减少带宽而降低刷新频率,则本发明中使用分片较少的时移索引文件的信息有效性会更高,会较少出现分片超过时移边界而导致的信息过期的情况。
(3)本发明中的基于hls协议的时移优化方法,http的url传参方式增强了hls协议交互的灵活度,客户端不用自己预先计算接下来要播放的分片时间与分片序列id信息,即可适应播控的方向控制。实现hls方案的升级不完全依赖于终端软件方案、在流媒体服务器升级就能达到优化播控的效果。
附图说明
图1为本发明中基于hls协议的时移优化方法的流程图,
图2为本发明中基于hls协议的时移优化系统的结构框图。
具体实施方式
以下结合附图对本发明作进一步详细说明。
参见图1所示,本发明提供一种基于hls协议的时移优化方法,该方法包括以下步骤:
s1.从预设时间点开始,以定长的媒体段时间长度作为分片长度,计数每个流媒体分片的分片序列id;
在每个m3u8文件中,ext-x-targetduration表示指定最大的媒体段时间长度。本发明中,每天从零时开始,以恒定的媒体段时间长度作为分片长度,从0开始计数每个流媒体分片的分片序列id,这样客户端通过当前播放的分片序列id即可感知当前播放时间。
s2.保存时移范围内的所有流媒体分片并分组,将每连续的n片流媒体分片分成一组,每一组流媒体分片均形成一个时移索引文件;
对流媒体分片进行分组后,形成了多个时移索引文件,和传统的只有一个时移索引文件相比,缩小了时移传送粒度,减少传输时移索引文件所占带宽和所耗时间,且有利于提高起播速度。比如传统的时移索引文件是360个流媒体分片,本发明中分组后时移索引文件是10个流媒体分片,则传输效率是将会是传统的36倍。这样起播速度快,用户体验好。
在播放的过程中,相比传统的时移索引文件频繁刷新给流媒体服务器和网络带宽造成的压力,同样刷新频率,本发明使用分片较少的时移索引文件所占带宽要小得多。而如果传统的时移索引文件为了减少带宽而降低刷新频率,则本发明中使用分片较少的时移索引文件的信息有效性会更高,会较少出现分片超过时移边界而导致的信息过期的情况。
s3.客户端选择hls直播节目进行播放,请求直播索引文件;
s4.客户端通过播控操作使hls直播节目进入时移状态;
通常客户端可以通过快进、快退或暂停使hls直播节目进入时移状态。
s5.客户端在直播索引文件的地址的基础上附加时移附加信息,通过时移附加信息中的当前播放的流媒体分片的分片序列id和播放倍率信息,向http流媒体服务器请求时移索引文件;
本发明中客户端在直播索引文件的地址的基础上附加当前播放的流媒体分片的分片序列id和播放倍率信息,生成url向http流媒体服务器请求时移索引文件。
http的url传参方式增强了hls协议交互的灵活度,客户端不用自己预先计算接下来要播放的分片时间与分片序列id信息,即可适应播控的方向控制。实现hls方案的升级不完全依赖于终端软件方案、在流媒体服务器升级就能达到优化播控的效果。且基于此方法,还可扩展其它信息反馈机制,进一步提高流媒体服务器对终端的服务能力。
s6.http流媒体服务器接收时移索引文件请求,并解析时移附加信息,根据解析结果将对应的时移索引文件发送给客户端;
具体的,http流媒体服务器解析时移附加信息,若解析结果中播放倍率为负数,http流媒体服务器把包含当前播放的流媒体分片的分片序列id减1的流媒体分片的时移索引文件发送给客户端。若解析结果中播放倍率为正数,http流媒体服务器把包含当前播放的流媒体分片的分片序列id加1的流媒体分片的时移索引文件发送给客户端。
s7.客户端播放接收到的时移索引文件中的流媒体分片。
客户端根据时移索引文件得到时移总时长信息,参照当前时间计算出时移开始时间,然后请求http流媒体服务器所发送的时移索引文件中的流媒体分片并播放,同时还缓存该时移索引文件,形成本地时移切片列表。
当播放中的流媒体分片剩余时间到预设值时,重复执行步骤s5至s7,客户端周期性请求下一时移索引文件并播放下一时移索引文件中的流媒体分片,直至播放终止。
客户端播放完时移索引文件中的一个流媒体分片后,判断本地是否缓存有下一个流媒体分片,若是,则继续播放下一个流媒体分片,若否,需要说明的是,则需要判断是到了时移左边界还是时移右边界,若到了时移左边界,则恢复为普通一倍速时移播放,若到了时移右边界,则切换为直播状态。
参见图2所示,本发明还提供一种基于hls协议的时移优化系统,其包括hls流媒体服务子系统和客户端。
hls流媒体服务子系统包括编码服务器、切片服务器和http流媒体服务器。
编码服务器用于将音频数据和视频数据进行编码,媒体数据采集后,需要把原始的音频数据和视频数据进行编码,以产生压缩的、适合网络传输和终端播放的媒体流。
切片服务器用于将编码服务器输出的媒体流存储为多个流媒体分片。其中切片保存是按照媒体服务端的切片策略,切片服务器把编码服务器输出的媒体流存储为连续的、定长的、较短的媒体文件。m3u8列表保存分为两种,直播索引文件中一般保留最新的三个分片地址,以类似“滑动窗口”的形式,进行更新。时移索引文件以合适的n片为单位,分组缓存。
http流媒体服务器用于响应时移索引文件请求和播放流媒体分片请求。http协议作为hls的基础协议,承担着响应时移索引文件请求和分片文件请求的主要任务。当http流媒体服务器识别到时移索引文件请求的请求参数里面的时移请求信息时,通过映射规则,把请求重定向到缓存的时移索引文件。
客户端,其用于向http流媒体服务器发送时移索引文件请求,所述客户端得到时移索引文件后,还用于向http流媒体服务器请求并播放所述时移索引文件里面的切片文件。
本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。