HLS流媒体的播放方法及系统与流程

文档序号:14613157发布日期:2018-06-05 21:20阅读:637来源:国知局
HLS流媒体的播放方法及系统与流程

本发明涉及网络流媒体播放领域,尤其涉及在网络不稳定时HLS流媒体的播放处理方法及系统。



背景技术:

数字视频的传输经历了有线电视网络、IPTV,目前进入到互联网电视时代。传统有线电视和IPTV通过专用通道传输多媒体数据,可保证数据平滑、准时可达,而基于互联网或移动互联网的多媒体数据没有专用传输通道,数据是在公共网络上传输,高峰期网络拥塞概率大,不能保障传输通道带宽的稳定性,特别是在移动网络的情况下,网络稳定性较差,出现抖动概率高,导致网络带宽的急剧变化。对于视频播放,数据包的延迟到达会造成播放的卡顿,极大地伤害了观看体验。

为了使得视频适合在互联网上传输,人们发明了许多网络流媒体协议,HTTP Live Streaming(HLS)是目前使用最广泛的一种。HLS是一种基于HTTP的流媒体传输协议,可以实现流媒体的点播和直播服务。HLS协议的基本原理是:服务器将音视频流切成小片(TS),并建立索引(M3U8)文件;终端用户先下载索引文件,再通过索引文件中的索引地址依次下载和播放对应TS分片,形成流媒体的播放。当同一信号源包含多个不同码率的HLS流时,它能够自适应码率流播,根据终端网络带宽的变化,自动切换到不同码率的流,为用户在不稳定的网络上提供流畅的播放体验。

然而,当实时网络带宽持续小于信号源中的最低码率的HLS流,仍然会引起播放器卡顿,特别是HLS直播时,由于分片时长较短,引起播放卡顿的概率更高,严重降低直播时的用户体验。可见,如何改善在网络拥塞和抖动情况下网络流媒体播放的流畅性,依然是本领域亟待解决的问题。



技术实现要素:

鉴于以上所述现有技术的缺点,本发明的目的在于提供HLS流媒体的播放方法及系统,用于解决现有技术中网络环境恶劣时网络流媒体播放不流畅的问题。

为实现上述目的及其他相关目的,本发明提供一种HLS流媒体的播放方法,所述HLS流媒体包括多个不同码率的替换流,所述方法包括:获取所述HLS流媒体的M3U8索引文件,根据所述M3U8索引文件中的索引信息,选择将码率最低的替换流所对应的索引信息作为第一当前播放列表;根据所述第一当前播放列表中待处理的TS分片的地址信息,获取所述待处理的TS分片的音视频原始流,并存入缓存队列中;根据所述音视频原始流的下载时间和数据量大小,计算网络的实时带宽;根据所述M3U8索引文件的索引信息,从码率小于所述实时带宽的替换流中选择码率最大或大于预设阈值的替换流,将其所对应的索引信息作为第二当前播放列表,以替换所述第一当前播放列表。

于本发明一实施例中,所述从码率小于所述实时带宽的替换流中选择码率大于预设阈值的替换流,包括:将码率大于所述预设阈值的替换流按照码率大小排序,并由小到大逐步增加。

于本发明一实施例中,所述方法还包括:若所述M3U8索引文件的索引信息中,没有码率小于所述实时带宽的替换流,则保持所述第一当前播放列表所对应的码率不变。

于本发明一实施例中,所述方法还包括:每当有TS分片的音视频原始流存入所述缓存队列时,统计并更新所述缓存队列存有的TS分片的个数。

于本发明一实施例中,所述方法还包括:判断所述缓存队列中存有的TS分片的个数是否达到存储量的上限值,若是,则等待播放这些TS分片的音视频原始流。

于本发明一实施例中,所述方法还包括:依序播放所述缓存队列中等待播放的TS分片的音视频原始流;其中,首个播放的TS分片的播放速率为预设播放速率,随后,每个播放的TS分片的播放速率pv通过以下公式计算得到:

qn为所述缓存队列中剩下的待播放的TS分片的个数,T为最近一个播放的TS分片的播放时长,t为所述最近一个播放的TS分片请求到的音视频原始流的播放时长。

于本发明一实施例中,所述方法还包括:若计算得到的pv小于预设值,则令所述pv等于所述预设值。

于本发明一实施例中,所述方法还包括:判断所述缓存队列中存有的TS分片的个数是否达到存储量的上限值,若否,则继续获取下一个待处理的TS分片的音视频原始流,直到所述M3U8索引文件对应的HLS流媒体处理完毕。

于本发明一实施例中,在所述M3U8索引文件对应的HLS流媒体处理完毕之后,所述方法还包括:获取更新的M3U8索引文件。

为实现上述目的及其他相关目的,本发明提供一种HLS流媒体的播放系统,所述HLS流媒体包括多个不同码率的替换流,所述系统包括:排序模块,用于获取所述HLS流媒体的M3U8索引文件,根据所述M3U8索引文件中的索引信息,选择将码率最低的替换流所对应的索引信息作为第一当前播放列表;存储模块,用于根据所述第一当前播放列表中待处理的TS分片的地址信息,获取所述待处理的TS分片的音视频原始流,并存入缓存队列中;计算模块,用于根据所述音视频原始流的下载时间和数据量大小,计算网络的实时带宽;替换模块,用于根据所述M3U8索引文件的索引信息,从码率小于所述实时带宽的替换流中选择码率最大或大于预设阈值的替换流,将其所对应的索引信息作为第二当前播放列表,以替换所述第一当前播放列表。

如上所述,本发明的HLS流媒体的播放方法及系统,通过HLS多码率的自适应机制和自适应调整播放速率的机制,确保网络环境在恶化到极差的情况下,仍然能够平滑地播放网络流媒体,提高HLS播放器带给用户的用户体验。

附图说明

图1显示为本发明一实施例中ES数据请求过程流程图。

图2显示为本发明一实施例中ES数据播放过程流程图。

图3显示为本发明一实施例中HLS流媒体的播放系统模块图。

具体实施方式

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

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

本发明将以HLS流媒体协议为例,详细阐述所提出的根据网络情况自动调整播放器音视频播放速率的方法及系统,但是,该原理不以HLS流媒体协议为限,本发明提出的方法及系统同样适用于其他网络流媒体协议,例如:rtp(Real-time Transport Protocol,实时传输协议)、rtcp(Real-time Transport Control Protocol,RTP控制协议)、rtsp(Real Time Streaming Protocol,实时流传输协议)、rtmp(Real Time Messaging Protocol,实时消息传送协议)、mms(Microsoft Media Server Protocol,微软媒体服务器协议)等。

在HLS播放过程中,由于网络变化导致下载分片的时间大于已缓存音视频的播放时长,不能保持音视频播放的连续性,从而引起播放卡顿,大大降低用户体验。考虑到:在网络带宽持续恶化、已经低于HLS最低码率要求的时候,HLS既有的码率自适应机制已经不能再起作用了,本发明提出:延长已缓存音视频数据的播放时长,来避免因等待分片数据而出现的播放卡顿问题。播放速度降低的比例与缓存中音视频数据的多少紧密相连,缓存中的音视频数据越多,播放速率降低的比例就越小,用户可感知到的降速影响就越小。本发明能够大大降低播放卡顿的概率,提高HLS直播的用户体验。

本发明提出一种根据网络情况自动调整播放器音视频播放速率的方法,首先,通过分片的下载时间来评估网络情况;其次,根据网络评估情况计算播放速率;最后,按照计算的播放速率播放缓存中的音视频数据。在本发明中,每一种码率的HLS流就是一个播放列表。

本发明中的整个HLS播放器包含两个并行的处理流程,分别是ES(音视频原始流)数据请求和ES数据播放,两个流程之间通过ES数据的缓存队列进行同步处理。

假设:队列为Q,可缓存M个TS分片的ES数据;HLS源包含N种(如4种)码率的HLS流,当前播放列表的序号为i,对应列表的码率B(i);ES数据请求过程中每次下载TS分片的时间为td,分片大小为md,该TS分片播放时长为T,该分片已请求到的ES数据播放时长为t,下载TS分片后计算的网络带宽为bd;ES数据缓存队列Q最多缓存M个(如5个)TS分片的ES数据,队列中的TS分片(包含全部ES数据的TS分片)数量为qn,队列中视频ES数据的播放时长为qvt;ES数据播放过程中播放速率为pv,正常播放速率可以为:pv=1。

在ES数据请求过程中,主要包含TS分片下载、TS分片解析和码率切换三部分。图1显示为本发明一实施例中ES数据请求过程的流程图,包括以下几个详细控制步骤:

步骤S101:更新和解析索引信息。第一次进入该步骤时,需要下载和解析M3U8索引文件的索引信息,将多个码率的HLS流按照码率大小进行排序(从小到大),从而得到播放列表,并将当前播放列表切换到最低码率的HLS流,从0开始编号,即i=0,且i<N。之后,进入该步骤时,需要在HLS直播情况下更新所有码率的M3U8索引文件。执行完后,转入步骤S102。需要说明的是,在N种码率的HLS流排序后形成的播放列表中,每个码率对应的播放列表都是由相同数目的TS分片构成,每个播放列表对应的TS分片的播放时长相等,但每个播放列表的TS分片的下载地址不同。

步骤S102:请求完一个TS分片的ES数据。根据当前播放列表中待请求TS分片的地址信息,下载和解析TS分片的ES数据,将得到的ES数据存入缓存队列Q,并更新视频时长qvt。在请求完分片所有ES数据后,更新该分片下载时间td和分片大小md,队列Q的TS分片计数器qn增加1。执行完后,转入步骤S103。

步骤S103:判断所有分片是否都处理完毕,即整个HLS流数据请求是否完成。若条件成立,则结束整个ES数据请求流程;否则,转入步骤S104。

步骤S104:根据网络带宽切换HLS码率。下载和解析完一个TS分片ES数据后,采用码率自适应(ABR)机制切换播放列表。每下载一个分片都根据分片数据的下载时间和分片数据的大小计算网络的实时带宽bd=md/td,再根据实时带宽切换到码率匹配的播放列表(码率趋近最大且小于带宽),以保证播放的流畅性。假设:播放列表新的序号为i′,在满足B(i′)<bd的条件下,使得i′最大,且当bd<B(0)时,i′=0。当i′>i,i增加1,即作为下一个播放列表,否则,i=i′,即保持当前播放列表。执行完后,转入步骤S105。

由于网络带宽的恢复一般是缓慢的,因此,在一实施例中,切换后的码率大小须渐进式增加,例如:现有1M bits/s、2M bits/s、4M bits/s、8M bits/s的4种码率的播放列表,N=4,假设当前i=1,即正在播放1M bytes/s码率的播放列表,而根据下载当前TS分片计算出来的带宽是10M bits/s,满足条件且最大的应选择i'=3,即8M bits/s,但是考虑到网络稳定性,这里取i'=2,即4M bits/s,以保证后续TS分片下载的连续性和码率质量。若后续下载的TS得出的网络带宽也是大于等于8M bits/s,则再缓慢地将播放码率增加到8M bits/S。同理,由于网络带宽的下降一般是陡降的,因此,在一实施例中,需要跳跃式地降低码率,承接上例,若计算出来的i'小于i,则陡降到i=0,如i=<i'<i+1,则i'=i,即播放列表码率不变。

步骤S105:判断ES数据缓存队列是否已满。具体的,当qn等于M时,队列Q缓存已满,需等待ES数据播放,直到队列不满,即qn小于M,再转入步骤S101;否则,直接转入步骤S101。

在ES数据播放过程中,主要包含ES数据解码、解码数据播放和播放速率计算三个部分。图2显示为本发明一实施例的ES数据播放过程的流程图,包括以下几个详细控制步骤:

步骤S201:将播放速率初始化为正常播放速率。承接假设条件,设置播放速率pv=1后,转入步骤S102。

步骤S202:第一个TS分片ES数据请求完成。等待ES数据请求流程处理完第一个TS分片后,转入步骤S203。

步骤S203:解码一帧ES数据,即从缓存队列Q中读取一帧ES数据进行解码。若队列Q为空,则等待数据,直到读取一帧ES数据成功后,再进行解码。更新qvt后,转入步骤S204。

步骤S204:按播放速率播放一帧解码数据。将步骤S203的解码数据按照播放速率pv=1进行播放后,转入步骤S205。

步骤S205:判断是否播放完一个TS分片,即判定当前播放的一帧数据是否为TS分片的最后一帧数据。若条件成立,则队列Q的TS分片计数器qn减少1,再转入步骤S206;否则,转入步骤S203。

步骤S206:判断HLS流是否播放完毕,即整个HLS流是否播放完毕。若条件成立,则结束整个ES数据播放流程;否则,转入步骤S207。

步骤S207:根据缓存ES数据多少计算下一个TS分片的播放速率。当qn大于等于M-1,认为网络正常稳定,播放器保持正常播放速率pv=1;当qn小于M-1时,就需要降低播放速率,速率的计算公式为:

每处理完一个TS分片的ES数据之后,更新一次播放速率pv,下一个TS分片采用新的播放速率播放。当qn等于0时,pv=t/T;当qn大于0时,pv=t/(t+T/(qn+1))。若更新后的pv小于预设值(可设置为0.25)时,则强制v等于预设值,以避免因为播放速率太低而造成声音感官效果差。处理完毕后,转入步骤S203。

请参阅图3,与上述方法实施例原理相似的是,本发明提供一种HLS流媒体的播放系统300,主要包括:排序模块301、存储模块302、计算模块303、替换模块304。由于前述实施例中的技术特征可以应用于本系统实施例,因而不再重复赘述。

排序模块301获取所述HLS流媒体的M3U8索引文件,根据所述M3U8索引文件中的索引信息,选择将码率最低的替换流所对应的索引信息作为第一当前播放列表;

存储模块302根据所述第一当前播放列表中待处理的TS分片的地址信息,获取所述待处理的TS分片的音视频原始流,并存入缓存队列中;

计算模块303根据所述音视频原始流的下载时间和数据量大小,计算网络的实时带宽;

替换模块304根据所述M3U8索引文件的索引信息,从码率小于所述实时带宽的替换流中选择码率最大或大于预设阈值的替换流,将其所对应的索引信息作为第二当前播放列表,以替换所述第一当前播放列表。其中,所述从码率小于所述实时带宽的替换流中选择码率大于预设阈值的替换流,可以包括:将码率大于所述预设阈值的替换流按照码率大小排序,并由小到大逐步增加。此外,若所述M3U8索引文件的索引信息中,没有码率小于所述实时带宽的替换流,则可以保持所述第一当前播放列表所对应的码率不变。

在一实施例中,系统300还包括:统计模块,每当有TS分片的音视频原始流存入所述缓存队列时,统计并更新所述缓存队列存有的TS分片的个数。所述统计模块还拥于:判断所述缓存队列中存有的TS分片的个数是否达到存储量的上限值,若是,则等待播放这些TS分片的音视频原始流;若否,则继续获取下一个待处理的TS分片的音视频原始流,直到所述M3U8索引文件对应的HLS流媒体处理完毕,再获取更新的M3U8索引文件。

在一实施例中,系统300还包括:播放模块,依序播放所述缓存队列中等待播放的TS分片的音视频原始流;其中,首个播放的TS分片的播放速率为预设播放速率,随后,每个播放的TS分片的播放速率pv通过以下公式计算得到:

qn为所述缓存队列中剩下的待播放的TS分片的个数,T为最近一个播放的TS分片的播放时长,t为所述最近一个播放的TS分片请求到的音视频原始流的播放时长。若计算得到的pv小于预设值,可以令所述pv等于所述预设值。

综上所述,本发明的HLS流媒体播放方法及系统,通过降低网络变差到一定程度时播放器的播放速率,为未完成ES数据请求的TS分片争取更多的下载时间,保证播放的连续性,减少播放卡顿情况,有效克服了现有技术中的种种缺点而具高度产业利用价值。

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

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