一种基于HLS协议的带宽自适应调节视频分辨率的方法与流程

文档序号:12554394阅读:671来源:国知局
本发明涉及流媒体
技术领域
:,尤其涉及一种基于HLS协议的带宽自适应调节视频分辨率的方法。
背景技术
::用户在用网络观看视频时,大多需要根据当前网络带宽手动地来选择视频的清晰度即视频的分辨率,更多情况下是愿意观看清晰度更高的视频,但在网络较差的情况下用户选择较低分辨率播放后担心网络不佳或避免来回切换都不会再选择更高清晰度的视频播放,这十分影响用户的观看体验,目前仍缺少一种成熟的能够根据当前网络带宽自动切换视频分辨率的带宽自适应方法让用户免于重复切换。HLS协议(HTTPLiveStreaming)是基于HTTP的流媒体通信协议,近年来HLS协议在流媒体领域得到广泛应用。HLS协议采用流媒体切片原理,提供一个可以访问的m3u8播放列表,记录了切片的个数和每个切片的信息。由于该协议采用HTTP协议,能够根据当前带宽自适应调整码率,即能根据从服务器下载HLS切片的流媒体数据速度来选择合适码率播放,在网络带宽比较低的情况下自动切换低码率播放,带宽比较好情况下自动选择更高码率播放,这样能够确保在播放视频时流畅。技术实现要素:本发明提供一种基于HLS协议的带宽自适应调节视频分辨率的方法,解决了在HLS协议的基础上查找一段时间内与当前网络带宽的匹配的视频索引号并利用判决条件判决后自动切换视频分辨率的技术问题。为解决以上技术问题,本发明提供一种基于HLS协议的带宽自适应调节视频分辨率的方法,包括步骤:S1.从服务器下载HLS切片的流媒体文件到PINGPONG缓存区,根据每一HLS切片的流媒体文件的大小和下载时间计算出其对应的网络带宽;S2.比对每一HLS切片的流媒体文件对应的所述网络带宽和不同分辨率下的视频码率,得到并记录所述网络带宽对应的视频播放索引号;S3.判断第一预设时间段内连续的HLS切片对应的视频播放索引号是否为同一个值,若否则返回步骤S1;若是则判定所述同一个值所对应的视频播放索引号为所述第一预设时间段内相匹配的视频播放索引号,并进行下一步;S4.判断所述相匹配的视频播放索引号和当前视频播放索引号是否相同,若是则保持当前视频分辨率播放,若否则进行下一步;S5.判断所述相匹配的视频播放索引号是否小于当前视频播放索引号,若是则切换当前视频分辨率为所述相匹配的视频播放索引号对应的视频分辨率进行播放;若否则进行下一步;S6.计算出当前播放视频在第二预设时间段内的平均网络带宽,并判断所述平均网络带宽是否大于上一次上升视频码率的阀值,若是,则切换当前视频分辨率为所述最佳视频播放索引号对应的视频分辨率进行播放;若否则返回到步骤S1。进一步地,在所述步骤S6中,所述上一次上升码率的阀值为上一次由低码率切换为高码率不成功时的网络带宽。进一步地,所述步骤S1中的所述不同分辨率下的视频码率伴随该视频码率的m3u8路径由主板SNMP下发顶层的m3u8路径给HLS子板、所述HLS子板解析顶层m3u8文件而得。更进一步地,在所述步骤S1前,默认根据不同分辨率下的最大视频码率的视频播放索引号进行播放。进一步地,在所述步骤S6后,每一片所述HLS切片的流媒体文件经过TS打包器,以UDP协议方式传输给逻辑处理器,逻辑处理器将捕获到的相对应的UDP包一部分传输给主板SNMP,另一部分传输给CPU输出。更进一步地,所述主板SNMP从逻辑处理器上捕获的UDP包主要以ASI输出、IP输出和复用到解码器中输出。进一步地,在所述步骤S3中,从第一次判断到两个连续的HLS切片对应的视频播放索引号为同一个值开始,累计记录下相同的视频播放索引号个数,经过所述第一预设时间段记录到的相同的视频播放索引号个数为N;当相同的视频播放索引号个数累计到N时,即所述第一预设时间段内连续的HLS切片对应的视频播放索引号为同一个值。本发明提供的一种基于HLS协议的带宽自适应调节视频分辨率的方法,基于HLS的码率自适应特性,实现了从服务器接收HLS流通过解码输出播放,同时能够根据从服务器下载流媒体速度计算出当前带宽进而可以自动选择合适当前带宽的视频码率播放,在网络环境差的情况下也能保持视频播放流畅。附图说明图1是本发明实施例提供的一种基于HLS协议的带宽自适应调节视频分辨率的方法的步骤流程图;图2是本发明实施例提供的一种基于HLS协议的带宽自适应调节视频分辨率的方法的算法流程图;图3是本发明实施例提供的一种基于HLS协议的带宽自适应调节视频分辨率的方法的HLS切片的处理走向图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。以下仅为较佳实施例,不构成对本发明保护范围的限制。参见图1,是本发明提供的一种基于HLS协议的带宽自适应调节视频分辨率的方法的流程图。在本实施例中,所述的一种基于HLS协议的带宽自适应调节视频分辨率的方法,包括步骤:S1.从服务器下载HLS切片的流媒体文件到PINGPONG缓存区,根据每一HLS切片的流媒体文件的大小和下载时间计算出其对应的网络带宽;S2.比对每一HLS切片的流媒体文件对应的所述网络带宽和不同分辨率下的视频码率,得到并记录所述网络带宽对应的视频播放索引号;S3.判断第一预设时间段内连续的HLS切片对应的视频播放索引号是否为同一个值,若否则返回步骤S1;若是则判定所述同一个值所对应的视频播放索引号为所述第一预设时间段内相匹配的视频播放索引号,并进行下一步;S4.判断所述相匹配的视频播放索引号和当前视频播放索引号是否相同,若是则保持当前视频分辨率播放,若否则进行下一步;S5.判断所述相匹配的视频播放索引号是否小于当前视频播放索引号,若是则切换当前视频分辨率为所述相匹配的视频播放索引号对应的视频分辨率进行播放;若否则进行下一步;S6.计算出当前播放视频在第二预设时间段内的平均网络带宽,并判断所述平均网络带宽是否大于上一次上升视频码率的阀值,若是,则切换当前视频分辨率为所述最佳视频播放索引号对应的视频分辨率进行播放;若否则返回到步骤S1。在本实施例中,在所述步骤S1前,默认根据不同分辨率下的最大视频码率的视频播放索引号进行播放。所述步骤S1中的所述不同分辨率下的视频码率伴随该视频码率的m3u8路径由主板SNMP下发顶层的m3u8路径给HLS子板、所述HLS子板解析顶层m3u8文件而得。在所述步骤S3中,从第一次判断到两个连续的HLS切片对应的视频播放索引号为同一个值开始,累计记录下相同的视频播放索引号个数,经过所述第一预设时间段记录到的相同的视频播放索引号个数为N;当相同的视频播放索引号个数累计到N时,即所述第一预设时间段内连续的HLS切片对应的视频播放索引号为同一个值。在所述步骤S6中,所述上一次上升码率的阀值为上一次由低码率切换为高码率不成功时的网络带宽,只有大于该阀值才考虑上升,目的为了防止在两个分辨率不停地切换。在所述步骤S6后,每一片所述HLS切片的流媒体文件经过TS打包器,以UDP协议方式传输给逻辑处理器,逻辑处理器将捕获到的相对应的UDP包一部分传输给主板SNMP,另一部分传输给CPU输出。所述主板SNMP从逻辑处理器上捕获的UDP包主要以ASI输出、IP输出和复用到解码器中输出。为了更便于理解HLS切片的方法处理流程,参考图2,是本发明提供的一种基于HLS协议的带宽自适应调节视频分辨率的方法的算法流程图。通过从服务器中获取一片HLS流的大小和时间,并计算出当前的带宽大小;将上述得出的带宽大小和(不同分辨率下的)输入视频码率进行比较得到(与之匹配的)适合播放索引looksuitableindex,记录当前正播放索引curtsurlindex和记录每一次找到适合播放索引相同的个数continuecount;比较当前适合(合适)播放索引looksuitableindex和上一片适合索引savesuitableindex,如果相同,continuecount的计算个数加1(continuecount++),否则有一次不同continuecount重新记录为零(continuecount值为0从新开始);判断连续计数continuecount是否满足N次,如果不满足继续从第一步开始,如果满足则判断匹配的视频播放索引号looksuitableindex和当前视频播放索引号curtsurlindex是否相等;如果找到looksuitableindex和curtsurlindex相等则不需要切换分辨率,又重新从第一步开始;如果looksuitableindex小于curtsurlindex,则需要直接切换低码率视频播放。如果looksuitableindex大于curtsurlindex,则进一步判断计算出当前的平均带宽(程序预设一段短时间内)是否大于上一次上升视频码率的阀值,其中用数组s32RecordLastRiseBiteRate[HLS_INPUT_URLMAX]记录每一个播放索引的阀值。如果大于上一次上升视频码率的阀值,则这一次就选择高码率视频播放,否则这一次就不需要切换分辨率,返回到最开始。本算法通过获取一片视频流大小和所用时间计算带宽,这样目的为了不需要消耗自身带宽也能得到当前带宽大小;本算法中采用连续计数continuecount来确定是否需要切换分辨率,这样可以确保当前计算的带宽算法稳定,防止有个别偏差的值导致误判带宽大小,如果连续计数continuecount值能达到N次说明获取N片HLS流计算出的带宽是一个稳定值;本算法中添加学习机制,用数组s32RecordLastRiseBiteRate[HLS_INPUT_URLMAX]记录每次上升码率时对应当前播放索引的阀值,这样防止上升码率后发现播放不顺畅又调回低码率播放,当播放低码率时检测带宽可以播放更大码率时,这时计算出的带宽和上一次对应阀值进行比较来进一步确定是否上升码率,因此可以防止出现两中分辨率不断切换播放的情况。为了更便于理解HLS切片的处理走向流程,与本发明提供的一种基于HLS协议的带宽自适应调节视频分辨率的方法的步骤流程图对应的是,参考图3,本发明还提供一种基于HLS协议的带宽自适应调节视频分辨率的方法的HLS切片的处理走向图。主板SNMP下发顶层的m3u8路径给子板,TSIP+_02子板解析顶层m3u8文件得到不同分辨率视频的m3u8路径和分辨率信息;根据第一步解析到的不同分辨率视频信息,通过比较不同视频的播放码率大小获得最大码率的视频播放索引号;首先选择最大码率视频播放,在播放过程中记录从服务器获取每一片HLS视频流的大小和所用的时间,通过带宽算法计算出当前的带宽大小,同时把计算出当前带宽大小和当前播放的视频码率进行比较得出适合当前带宽的视频播放索引,重新选择适合当前带宽的视频播放;从服务器中读取每一片的音视频信息存在PINGPONG缓冲区,处理完一片音视频包信息后通过TS打包器,以UDP协议方式传输给逻辑处理器;逻辑处理器捕获到相对应的UDP包一部分传输给主板SNMP,另一部分传输给CPU输出;主板从逻辑上捕获的包主要以ASI输出、IP输出和复用到解码器中输出。以上所述是本发明的优选实施方式,应当指出,对于本
技术领域
:的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1