视频码率切换方法、装置、计算机设备和存储介质与流程

文档序号:33620905发布日期:2023-03-25 11:44阅读:41来源:国知局
视频码率切换方法、装置、计算机设备和存储介质与流程

1.本技术涉及云计算技术领域,特别是涉及一种视频码率切换方法、装置、计算机设备和存储介质。


背景技术:

2.随着计算机技术和互联网技术的发展,视频成为人们获取信息的重要渠道之一,视频形式也愈发多样,例如直播视频、在线视频等。目前,复杂多变的网络环境为流媒体传输与播放带来极大挑战,针对不同网络状况的自适应码率切换方法成为流媒体技术研究的热点之一。
3.当前的自适应码率切换方式,大多是通过评估拉流端当前的可用带宽,进而调整视频码率来匹配当前的网络状况,但是带宽探测本身就存在一定的不准确性和误差,同时带宽探测无法准确区分带宽的变化是可持续性的还是短暂抖动的,导致码率切换频繁,在引起视频卡顿的同时,还会降低视频质量。


技术实现要素:

4.基于此,有必要针对上述技术问题,提供一种能够实现视频流畅度与视频质量之间的均衡的视频码率切换方法、装置、计算机设备和存储介质。
5.一种视频码率切换方法,该方法包括:
6.接收播放端在播放目标码率的视频流时定期上报的关于所述视频流的下载码率和本地缓存量,所述目标码率为多个档次的转码码率中的一种;
7.基于连续上报的所述下载码率与所述目标码率之间的相对大小关系,判定播放端当前的网络带宽状态;
8.基于连续上报的所述本地缓存量中两两相邻的本地缓存量间的变化量与波动量,判定播放端当前的缓存状态;
9.当所述当前的网络带宽状态与所述当前的缓存状态满足关于所述视频流的码率档次预上调条件时,根据连续上报的所述下载码率确定播放端当前的预估带宽,基于对所述目标码率上调档次后的预上调码率与所述当前的预估带宽之间的相对大小关系,判定播放端播放所述预上调码率的所述视频流时的预估网络带宽状态;
10.当所述预估网络带宽状态满足所述码率档次预上调条件时,指示播放端播放所述预上调码率的所述视频流。
11.一种视频码率切换装置,该装置包括:
12.接收模块,用于接收播放端在播放目标码率的视频流时定期上报的关于所述视频流的下载码率和本地缓存量,所述目标码率为多个档次的转码码率中的一种;
13.网络带宽状态判定模块,用于基于连续上报的所述下载码率与所述目标码率之间的相对大小关系,判定播放端当前的网络带宽状态;
14.缓存状态判定模块,用于基于连续上报的所述本地缓存量中两两相邻的本地缓存
量间的变化量与波动量,判定播放端当前的缓存状态;
15.预估网络带宽状态判定模块,用于当所述当前的网络带宽状态与所述当前的缓存状态满足关于所述视频流的码率档次预上调条件时,根据连续上报的所述下载码率确定播放端当前的预估带宽,基于对所述目标码率上调档次后的预上调码率与所述当前的预估带宽之间的相对大小关系,判定播放端播放所述预上调码率的所述视频流时的预估网络带宽状态;
16.指示模块,用于当所述预估网络带宽状态满足所述码率档次预上调条件时,指示播放端播放所述预上调码率的所述视频流。
17.在一个实施例中,所述网络带宽状态判定模块还用于:统计连续上报的上报总次数以及上报的所述下载码率大于预期码率的上报次数;所述预期码率是根据所述目标码率确定的;根据所述上报次数与所述上报总次数之间的大小关系,判定播放端当前的网络带宽状态。
18.在一个实施例中,所述网络带宽状态判定模块还用于:确定所述视频流当前对应的视频场景类型;获取与所述视频场景类型对应的预设系数;将所述目标码率与所述预设系数之积,作为所述预期码率。
19.在一个实施例中,所述网络带宽状态判定模块还用于:当所述上报次数等于所述上报总次数时,判定所述当前的网络带宽状态为预期状态;当所述上报次数小于所述上报总次数时,判定所述当前的网络带宽状态为非预期状态。
20.在一个实施例中,所述缓存状态判定模块还用于:基于连续上报的所述本地缓存量,计算两两相邻的本地缓存量间的变化量,根据所述变化量确定播放端当前的缓存充足状态;基于连续上报的所述本地缓存量,计算两两相邻的本地缓存量间的波动量,根据所述波动量确定播放端当前的缓存稳定状态;根据所述当前的缓存充足状态和所述当前的缓存稳定状态,确定播放端当前的缓存状态。
21.在一个实施例中,所述缓存状态判定模块还用于:确定连续上报的上报总次数中,所述本地缓存量大于缓存量上限值的达上限次数以及所述本地缓存量小于或等于缓存量下限值的达下限次数;根据所述本地缓存量间的变化量、所述达上限次数和所述达下限次数,确定所述当前的缓存充足状态。
22.在一个实施例中,所述缓存状态判定模块还用于:当所述两两相邻的本地缓存量间的变化量表示连续上报的所述本地缓存量逐次上升时,或者,当所述达上限次数等于所述上报总次数时,判定所述当前的缓存状态为充足状态;当所述两两相邻的本地缓存量间的变化量表示连续上报的所述本地缓存量逐次下降时,或者,当所述达下限次数等于所述上报总次数时,判定所述当前的缓存状态为非充足状态。
23.在一个实施例中,所述缓存状态判定模块还用于:当连续上报的所述本地缓存量的波动量均值小于或等于预设阈值时,判定播放端当前的缓存状态为稳定状态;当连续上报的所述本地缓存量的波动量均值大于预设阈值时,判定播放端当前的缓存状态为非稳定状态。
24.在一个实施例中,所述缓存状态判定模块还用于:当相邻的本地缓存量中,在后上报的本地缓存量小于或等于预设上限值时,则确定所述相邻的本地缓存量间的波动量为所述相邻的本地缓存量之差的绝对值;当相邻的本地缓存量中,在后上报的本地缓存量大于
预设上限值时,则确定所述相邻的本地缓存量之间的波动量为零。
25.在一个实施例中,所述预估网络带宽状态判定模块还用于:确定连续上报的所述下载码率中的最大下载码率;将所述最大下载码率作为所述当前的预估带宽。
26.在一个实施例中,所述指示模块还用于:获取为对所述视频流的码率档次进行上调所设置的预上调系数;根据所述预上调系数和所述目标码率对应的预上调码率,确定带宽阈值;当所述当前的预估带宽大于所述带宽阈值时,判定播放端对应所述预上调码率的预估网络带宽状态满足所述码率档次预上调条件。
27.在一个实施例中,所述预估网络带宽状态判定模块还用于:当所述当前的网络带宽状态为预期状态,所述当前的缓存状态为充足状态和稳定状态时,判定所述当前的网络带宽状态与所述当前的缓存状态满足关于所述视频流的码率档次预上调条件。
28.在一个实施例中,所述缓存状态判定模块还用于:基于连续上报的所述本地缓存量,计算两两相邻的本地缓存量间的变化量,根据所述变化量确定播放端当前的缓存充足状态;所述指示模块还用于:当所述当前的网络带宽状态为非预期状态,和/或所述当前的缓存状态为非充足状态时,判定所述当前的网络带宽状态与所述当前的缓存充足状态中的至少一个满足关于所述视频流的码率档次预下调条件,则指示播放所述目标码率对应的预下调码率的所述视频流。
29.在一个实施例中,所述指示模块还用于:当所述当前的网络带宽状态、所述当前的缓存状态连续预设次满足关于所述视频流的码率档次预上调条件,且每次所述预估网络带宽状态满足所述码率档次预上调条件时,指示播放端播放所述预上调码率的所述视频流。
30.在一个实施例中,所述指示模块还用于:生成与播放端相对应的码率档次上调指令;将所述码率档次上调指令传递至视频服务器;所述码率档次上调指令用于指示所述视频服务器向播放端推送所述预上调码率的所述视频流。
31.一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现以下步骤:
32.接收播放端在播放目标码率的视频流时定期上报的关于所述视频流的下载码率和本地缓存量,所述目标码率为多个档次的转码码率中的一种;
33.基于连续上报的所述下载码率与所述目标码率之间的相对大小关系,判定播放端当前的网络带宽状态;
34.基于连续上报的所述本地缓存量中两两相邻的本地缓存量间的变化量与波动量,判定播放端当前的缓存状态;
35.当所述当前的网络带宽状态与所述当前的缓存状态满足关于所述视频流的码率档次预上调条件时,根据连续上报的所述下载码率确定播放端当前的预估带宽,基于对所述目标码率上调档次后的预上调码率与所述当前的预估带宽之间的相对大小关系,判定播放端播放所述预上调码率的所述视频流时的预估网络带宽状态;
36.当所述预估网络带宽状态满足所述码率档次预上调条件时,指示播放端播放所述预上调码率的所述视频流。
37.一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
38.接收播放端在播放目标码率的视频流时定期上报的关于所述视频流的下载码率
和本地缓存量,所述目标码率为多个档次的转码码率中的一种;
39.基于连续上报的所述下载码率与所述目标码率之间的相对大小关系,判定播放端当前的网络带宽状态;
40.基于连续上报的所述本地缓存量中两两相邻的本地缓存量间的变化量与波动量,判定播放端当前的缓存状态;
41.当所述当前的网络带宽状态与所述当前的缓存状态满足关于所述视频流的码率档次预上调条件时,根据连续上报的所述下载码率确定播放端当前的预估带宽,基于对所述目标码率上调档次后的预上调码率与所述当前的预估带宽之间的相对大小关系,判定播放端播放所述预上调码率的所述视频流时的预估网络带宽状态;
42.当所述预估网络带宽状态满足所述码率档次预上调条件时,指示播放端播放所述预上调码率的所述视频流。
43.一种计算机程序,计算机程序包括计算机指令,计算机指令存储在计算机可读存储介质中,计算机设备的处理器从计算机可读存储介质读取计算机指令,处理器执行计算机指令,使得计算机设备执行上述视频码率切换方法的步骤。
44.上述视频码率切换方法、装置、计算机设备和存储介质,播放端在播放目标码率的视频流时,定期上报关于视频流的下载码率和本地缓存量,在接收到上报的关于视频流的下载码率和本地缓存量后,一方面,不仅可以基于连续上报的下载码率与目标码率之间的相对大小关系,判定播放端当前的网络带宽状态,另一方面,还可以基于连续上报的本地缓存量的相对变化,判定播放端当前的缓存状态。那么,在当前的网络带宽状态与当前的缓存状态满足关于视频流的码率档次预上调条件时,基于连续上报的下载码率确定播放端当前的预估带宽,根据对目标码率上调档次后的预上调码率与当前的预估带宽之间的相对大小关系,判定播放端播放预上调码率的视频流时的预估网络带宽状态也满足码率档次预上调条件时,指示播放端播放预上调码率的视频流,这样,通过对播放端当前的网络带宽状态与预估网络带宽状态进行联合判定,同时考量播放端的缓存状态,提高了播放端上调视频码率的门槛,从而减少因码率切换频繁带来的影响,实现视频流畅度与视频质量之间的均衡。
附图说明
45.图1为一个实施例中视频码率切换方法的应用环境图;
46.图2为另一个实施例中视频码率切换方法的应用环境图;
47.图3为一个实施例中视频码率切换方法的流程示意图;
48.图4为一个实施例中视频播放页面的界面示意图;
49.图5为另一个实施例中视频码率切换方法的流程示意图;
50.图6为一个实施例中确定播放端当前的网络带宽状态的示意图;
51.图7为一个实施例中确定播放端当前的缓存充足状态的示意图;
52.图8为一个实施例中确定播放端当前的缓存稳定状态的示意图;
53.图9为又一个实施例中视频码率切换方法的流程示意图;
54.图10为一个实施例中视频码率切换装置的结构框图;
55.图11为一个实施例中计算机设备的内部结构图。
具体实施方式
56.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
57.本技术实施例提供的视频码率切换方法,涉及云技术(cloud technology),云技术是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。
58.云技术基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
59.本技术实施例提供的视频码率切换方法,主要涉及云技术的云计算(cloud computing)。云计算指it基础设施的交付和使用模式,指通过网络以按需、易扩展的方式获得所需资源;广义云计算指服务的交付和使用模式,指通过网络以按需、易扩展的方式获得所需服务。这种服务可以是it和软件、互联网相关,也可是其他服务。云计算是网格计算(grid computing)、分布式计算(distributedcomputing)、并行计算(parallel computing)、效用计算(utility computing)、网络存储(network storage technologies)、虚拟化(virtualization)、负载均衡(load balance)等传统计算机和网络技术发展融合的产物。
60.随着互联网、实时数据流、连接设备多样化的发展,以及搜索服务、社会网络、移动商务和开放协作等需求的推动,云计算迅速发展起来。不同于以往的并行分布式计算,云计算的产生从理念上将推动整个互联网模式、企业管理模式发生革命性的变革。
61.例如,在本技术实施例中,视频服务器接收推流端上传的原始视频流,将原始视频流转换为多个档次的转码码率的视频流,向播放端推送目标码率的视频流;并且,视频服务器接收播放端在播放目标码率的视频流时定期上报的关于视频流的下载码率和本地缓存量,当基于连续上报的下载码率和本地缓存量判定播放端当前的网络带宽状态与缓存状态满足关于视频流的码率档次预上调条件,且根据连续上报的下载码率确定播放端当前的预估带宽,基于当前的预估带宽与对目标码率上调档次后的预上调码率判定播放端的预估网络带宽状态为也满足码率档次预上调条件时,向播放端推送预上调码率的视频流。
62.本技术实施例提供的视频码率切换方法,还涉及区块链技术。区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。
63.例如,在本技术实施例中,视频服务器可以是区块链网络中的区块链节点,推流端将原始视频流传输至区块链网络中的区块链节点,播放端从区块链网络中拉取目标码率的视频流进行播放。
64.本技术提供的视频码率切换方法,可以应用于如图1所示的应用环境中,推流端102、播放端106分别通过网络与视频服务器104进行通信。其中,推流端102、播放端106均可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑、便携式可穿戴设备、电视机等。视频服务器104可以是在线视频服务器或者直播视频服务器。视频服务器104可以是独立的物理服务器,或者是多个物理服务器构成的服务器集群或者分布式系统,或者提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、cdn、以及大数据和人工智能平台等基础云计算服务的云服务器。
65.在一个实施例中,推流端102采集、编码生成原始视频流,将原始视频流传输至视频服务器104;视频服务器104接收推流端102上传的原始视频流,将原始视频流转换为多个档次的转码码率的视频流,向播放端106推送目标码率的视频流;视频服务器104接收播放端106在播放目标码率的视频流时定期上报的关于视频流的下载码率和本地缓存量,当基于连续上报的下载码率和本地缓存量判定播放端106当前的网络带宽状态与缓存状态满足关于视频流的码率档次预上调条件,且根据连续上报的下载码率确定播放端当前的预估带宽,基于当前的预估带宽与对目标码率上调档次后的预上调码率判定播放端106的预估网络带宽状态为也满足码率档次预上调条件时,向播放端106推送预上调码率的视频流,播放端106播放送预上调码率的视频流。
66.本技术提供的视频码率切换方法,也可以应用于如图2所示的应用环境中,评估服务器108分别通过网络与播放端106和视频服务器104进行通信。其中,评估服务器108可以是独立的物理服务器,或者是多个物理服务器构成的服务器集群或者分布式系统,或者提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、cdn、以及大数据和人工智能平台等基础云计算服务的云服务器。
67.在一个实施例中,推流端102采集、编码生成原始视频流,将原始视频流传输至视频服务器104;视频服务器104接收推流端102上传的原始视频流,将原始视频流转换为多个档次的转码码率的视频流,向播放端106推送目标码率的视频流;评估服务器108接收播放端106在播放目标码率的视频流时定期上报的关于视频流的下载码率和本地缓存量,当基于连续上报的下载码率和本地缓存量判定播放端106当前的网络带宽状态与缓存状态满足关于视频流的码率档次预上调条件,且根据连续上报的下载码率确定播放端当前的预估带宽,基于当前的预估带宽与对目标码率上调档次后的预上调码率判定播放端106的预估网络带宽状态为也满足码率档次预上调条件时,生成与播放端106相对应的码率档次上调指令,将码率档次上调指令传递至视频服务器104;视频服务器104响应于码率档次上调指令,向播放端106推送预上调码率的视频流,播放端106播放送预上调码率的视频流。
68.本技术实施例提供的视频码率切换方法,其执行主体可以是本技术实施例提供的视频码率切换装置,或者集成了该视频码率切换装置的终端,其中该视频码率切换装置可以采用硬件或软件的方式实现。
69.本技术实施例提供的视频码率切换方法,可应用于视频播放场景,例如在线视频播放场景、直播视频播放场景,等等。
70.在一个实施例中,在播放端播放视频流时,视频服务器或评估服务器接收播放端定期上报的视频流的下载码率和本地缓存量,基于连续上报的下载码率与目标码率之间的相对大小关系,判定播放端当前的网络带宽状态,基于连续上报的本地缓存量中两两相邻
的本地缓存量间的变化量与波动量,判定播放端当前的缓存状态,根据连续上报的下载码率确定播放端当前的预估带宽,基于对目标码率上调档次后的预上调码率与当前的预估带宽之间的相对大小关系,判定播放端播放预上调码率的视频流时的预估网络带宽状态,根据当前的网络带宽状态、当前的缓存状态与预估网络带宽状态,控制播放端播放视频流时的码率切换。
71.在一个实施例中,根据播放端当前的网络带宽状态、当前的缓存状态与预估网络带宽状态是否满足码率档次预上调条件,来判定播放端是否上调码率档次,根据播放端当前的网络带宽状态与当前的缓存状态是否满足码率档次下调条件,来判定播放端是否下调码率档次。
72.例如,视频服务器或评估服务器预先将播放端当前的网络带宽状态划分为预期状态和非预期状态,从缓存充足状态和缓存稳定状态两个维度评估播放端当前的缓存状态,将播放端当前的缓存状态划分为充足状态、非充足状态、稳定状态和非稳定状态,将播放端的预估网络带宽状态划分为预期状态和非预期状态,那么:
73.当播放端当前的网络带宽状态为预期状态、当前的缓存状态为充足状态和稳定状态,并且播放端对应预上调码率的预估网络带宽状态为预期状态时,判定播放端当前的网络带宽状态、当前的缓存状态与预估网络带宽状态满足码率档次预上调条件,指示上调播放端的视频流码率,由于提高了播放端上调视频码率的门槛,能够减少因码率切换频繁带来的影响,实现视频流畅度与视频质量之间的均衡。
74.当播放端当前的网络带宽状态为非预期状态,和/或当前的缓存状态为非充足状态时,判定播放端当前的网络带宽状态与当前的缓存状态满足码率档次下调条件,指示下调播放端的视频流码率,从而实现对视频码率的动态调整。
75.当播放端当前的网络带宽状态、当前的缓存状态与预估网络带宽状态中的至少一个不满足码率档次预上调条件,且当前的网络带宽状态与当前的缓存状态中的至少一个不满足码率档次预下调条件时,播放端保持当前的码率播放。例如,当播放端当前的网络带宽状态为预期状态,当前的缓存状态为充足状态和非稳定状态时,播放端保持当前的码率播放;再例如,当播放端当前的网络带宽状态为预期状态,当前的缓存状态为充足状态和稳定状态,播放端对应预上调码率的预估网络带宽状态为非预期状态时,播放端保持当前的码率播放。
76.在一个实施例中,如图3所示,提供了一种视频码率切换方法,本实施例主要以该方法应用于上述图1中的视频服务器104或者上述图2中的评估服务器108来举例说明,包括以下步骤:
77.步骤s302,接收播放端在播放目标码率的视频流时定期上报的关于视频流的下载码率和本地缓存量,目标码率为多个档次的转码码率中的一种。
78.其中,目标码率是播放端当前播放视频流的码率,播放码率与视频清晰度呈正比。下载码率是播放端从视频服务器下载视频流的码率。码率可反映数据传输时单位时间传送的数据量。本地缓存量可以是播放端播放视频流时的本地缓存帧数等。
79.在一个具体的应用场景中,视频服务器接收推流端上传的与目标视频标识相对应的原始视频流,将原始视频流进行多个档次的转码,获得多个转码码率的视频流。播放端上运行了支持视频播放功能的应用程序,播放端根据用户的操作进入该应用程序后,在该应
用程序提供的用户交互界面中启动播放与目标视频标识相对应的目标视频。视频服务器响应于播放端发送的与目标视频标识相对应的视频流拉取请求,从多个转码码率的视频流中选择其中一个码率的视频流推送给播放端。可选地,视频服务器可根据播放端当前的网络环境带宽或者用户清晰度需求等因素,确定推送给播放端的视频流码率。
80.在一个实施例中,播放端启动播放目标视频后,即定期向视频服务器或评估服务器上报关于视频流的下载码率和本地缓存量,以使得视频服务器或评估服务器自适应切换播放端的播放码率。在另一些实施例中,播放端启动播放目标视频后,在满足预设条件时,触发定期向视频服务器或评估服务器上报关于视频流的下载码率和本地缓存量,预设条件可以是播放时长达到预设时长等。或者,当播放端播放目标视频,且接收到自适应码率切换指令时,触发定期向视频服务器或评估服务器上报关于视频流的下载码率和本地缓存量。举例说明,参照图4,图4示出了一个实施例中视频播放页面的界面示意图。可以看到,在视频播放页面中展示自适应码率切换控件402,播放端可通过自适应码率切换控件402接收自适应码率切换指令。
81.在一个实施例中,目标码率可以是播放端启动播放目标视频时的初始播放码率,也可以是视频服务器或评估服务器调整后的播放码率。
82.在一个实施例中,视频服务器向播放端推送目标码率的视频流,播放端在播放目标码率的视频流时,定期向视频服务器或评估服务器上报关于视频流的下载码率和本地缓存量,视频服务器或评估服务器由此获取到播放端定期上报的关于视频流的下载码率和本地缓存量。
83.在一个实施例中,播放端在播放目标码率的视频流时,定期向评估服务器上报关于视频流的下载码率和本地缓存量,视频服务器向评估服务器上报关于视频流的多个档次的转码码率,评估服务器由此获取到播放端定期上报的关于视频流的下载码率和本地缓存量,以及视频服务器上报的关于视频流的多个档次的转码码率。
84.在一个实施例中,播放端在播放目标码率的视频流时,每隔预设时间间隔,向视频服务器或评估服务器上报关于视频流在预设时间间隔的下载码率均值和本地缓存量均值。在另一些实施例中,播放端向视频服务器或评估服务器上报关于视频流在预设时间间隔的下载码率最值和本地缓存量最值,这里的最值为最大值或者最小值。或者,播放端向视频服务器或评估服务器上报关于视频流在预设时间间隔内的某个时间点对应的下载码率和本地缓存量,例如在上报时间点对应的下载码率和本地缓存量。
85.步骤s304,基于连续上报的下载码率与目标码率之间的相对大小关系,判定播放端当前的网络带宽状态。
86.其中,网络带宽状态用于描述播放端所在网络环境的带宽状态。
87.可以理解,当前的网络带宽状态、当前的预估带宽以及当前的缓存状态等是一个相对变化的概念,以当前的网络带宽状态为例,视频服务器或评估服务器基于下一批次的连续预设次上报的下载码率与目标码率之间的相对大小关系得到的是播放端最新的“当前的网络带宽状态”。
88.在一个实施例中,视频服务器或评估服务器可基于连续预设次上报的下载码率分别与目标码率之间的相对大小关系,判断播放端当前的网络带宽状态。例如,视频服务器或评估服务器统计连续预设次上报的下载码率中,下载码率大于目标码率的上报次数,当该
上报次数与上报总次数之间的比值大于预设的比值时,判定当前的网络带宽状态为预期状态,当该上报次数与上报总次数之间的比值小于或等于预设的比值时,判定当前的网络带宽状态为非预期状态。
89.在一个实施例中,视频服务器或评估服务器也可以从连续预设次上报的下载码率中确定目标下载码率,基于目标下载码率与目标码率之间的相对大小关系,判断播放端当前的网络带宽状态,目标下载码率可以是连续预设次上报的下载码率中的最大下载码率、最小下载码率或下载码率均值等。
90.在一个实施例中,视频服务器或评估服务器可预先设置多于一个网络带宽状态,例如预期状态与非预期状态等。针对不同的网络带宽状态设置对应的预定条件,在实际获取到连续预设次上报的下载码率时,即可根据连续预设次上报的下载码率命中的预定条件,确定播放端当前的网络带宽状态。
91.步骤s306,基于连续上报的本地缓存量中两两相邻的本地缓存量间的变化量与波动量,判定播放端当前的缓存状态。
92.在一个实施例中,视频服务器或评估服务器可从缓存充足状态和缓存稳定状态两个维度来评估播放端当前的缓存状态。播放端当前的缓存充足状态用于反映本地缓存帧数是否足够充足,以支持视频的正常播放而不至于卡顿。播放端当前的缓存稳定状态用于反映本地缓存帧数的变化是否稳定。
93.在一个实施例中,视频服务器或评估服务器可基于连续上报的本地缓存量确定播放端当前的缓存充足状态和当前的缓存稳定状态,根据当前的缓存充足状态和当前的缓存稳定状态,确定播放端当前的缓存状态。
94.在一个实施例中,视频服务器或评估服务器可基于连续上报的本地缓存量,计算两两相邻的本地缓存量间的差值作为变化量,根据本地缓存量间的变化量确定播放端当前的缓存充足状态。例如,视频服务器或评估服务器统计两两相邻的本地缓存量间的变化量的上升次数,当上升次数与上报总次数之间的比值大于预设的比值时,判定当前的缓存状态为充足状态,当上升次数与上报总次数之间的比值小于或等于预设的比值时,判定当前的缓存状态为非充足状态。可以理解,视频服务器或评估服务器也可统计两两相邻的本地缓存量间的变化量的下降次数,根据下降次数与上报总次数之间的比值判断当前的缓存状态。
95.在一个实施例中,视频服务器或评估服务器统计连续预设次上报的本地缓存量中,基于连续上报的本地缓存量大于缓存量上限值的达上限次数,以及本地缓存量小于或等于缓存量下限值的达下限次数,根据达上限次数和达下限次数中的至少一个,确定播放端当前的缓存充足状态。例如,当达上限次数与上报总次数之间的比值大于预设的比值时,判定当前的缓存状态为充足状态,当达上限次数与上报总次数之间的比值小于或等于预设的比值时,判定当前的缓存状态为非充足状态。可以理解,视频服务器或评估服务器也可根据达下限次数与上报总次数之间的比值判断当前的缓存状态。
96.在一个实施例中,视频服务器或评估服务器可根据本地缓存量间的变化量、达上限次数和达下限次数中的至少一个,确定播放端当前的缓存充足状态。
97.在一个实施例中,视频服务器或评估服务器可预先设置多于一个缓存充足状态,例如充足状态与非充足状态等。针对不同的缓存充足状态设置对应的预定条件,在实际获
取到连续预设次上报的本地缓存量时,即可根据连续预设次上报的本地缓存量命中的预定条件,确定播放端当前的缓存充足状态。
98.在一个实施例中,视频服务器或评估服务器基于连续预设次上报的本地缓存量,计算相邻两次上报间的本地缓存量间的差值的绝对值作为波动量,根据本地缓存量间的波动量确定播放端当前的缓存稳定状态。例如,当连续上报的本地缓存量的波动量均值小于或等于预设阈值时,判定播放端当前的缓存状态为稳定状态,当连续上报的本地缓存量的波动量均值大于预设阈值时,判定播放端当前的缓存状态为非稳定状态。其中,预设阈值可根据实际的视频帧缓存稳定性需求进行设定。
99.在一个实施例中,视频服务器或评估服务器可预先设置多于一个缓存稳定状态,例如稳定状态与非稳定状态等。针对不同的缓存稳定状态设置对应的预定条件,在实际获取到连续预设次上报的本地缓存量时,即可根据连续预设次上报的本地缓存量命中的预定条件,确定播放端当前的缓存稳定状态。
100.步骤s308,当当前的网络带宽状态与当前的缓存状态满足关于视频流的码率档次预上调条件时,根据连续上报的下载码率确定播放端当前的预估带宽,基于对目标码率上调档次后的预上调码率与当前的预估带宽之间的相对大小关系,判定播放端播放预上调码率的视频流时的预估网络带宽状态。
101.其中,预估带宽是对播放端所在网络环境的带宽预测结果。带宽反映数据传输时单位时间能够传送的数据量。预上调码率是根据目标码率确定的。视频服务器或评估服务器可将目标码率上调预设档后对应的转码码率作为预上调码率,预设档可以是一档等。
102.在一个实施例中,当当前的网络带宽状态为预期状态,当前的缓存状态为充足状态和稳定状态时,判定当前的网络带宽状态与当前的缓存状态满足关于视频流的码率档次预上调条件。
103.在一个实施例中,视频服务器或评估服务器确定连续上报的下载码率中的最大下载码率;将最大下载码率作为当前的预估带宽。
104.在一个实施例中,视频服务器或评估服务器将连续预设次上报作为一个上报批次,统计连续预设次上报的下载码率中的最大下载码率,将最大下载码率作为当前的预估带宽,可通过以下公式进行表示:
105.ebk=max(bri)0<i<s
106.其中,ebk表示播放端当前的预估带宽,k表示目标码率的档次;bri表示第i次上报的下载码率;s表示上报总次数。
107.本实施例中,将连续预设次上报的下载码率中的最大下载码率作为当前的预估带宽,也就是说,采用阶段性的最大下载码率作为带宽评估依据,能够准确反映出当前真实的带宽上限。
108.在一个实施例中,视频服务器或评估服务器可预先设置多于一个预估网络带宽状态,例如预期状态与非预期状态等。针对不同的预估网络带宽状态设置对应的预定条件,在实际获取到播放端当前的预估带宽时,即可根据当前的预估带宽命中的预定条件,确定播放端的预估网络带宽状态。
109.在一个实施例中,视频服务器或评估服务器基于当前的预估带宽与预上调码率之间的相对大小关系,判断播放端对应预上调码率的预估网络带宽状态。例如,当当前的预估
带宽大于预上调码率时,判定播放端对应预上调码率的预估网络带宽状态为预期状态,当当前的预估带宽小于或等于预上调码率时,判定播放端对应预上调码率的预估网络带宽状态为非预期状态。
110.在一个实施例中,当播放端对应预上调码率的预估网络带宽状态为预期状态时,判定播放端对应预上调码率的预估网络带宽状态满足码率档次预上调条件。
111.在一个实施例中,视频服务器或评估服务器获取为对视频流的码率档次进行上调所设置的预上调系数;根据预上调系数和目标码率对应的预上调码率,确定带宽阈值;当当前的预估带宽大于带宽阈值时,判定播放端对应预上调码率的预估网络带宽状态为预期状态,当当前的预估带宽小于或等于带宽阈值时,判定播放端对应预上调码率的预估网络带宽状态满足码率档次预上调条件,可通过以下公式进行表示:
[0112][0113]
其中,status
ept
表示播放端对应预上调码率的预估网络带宽状态;exp表示预期状态,unexp表示非预期状态;ebk表示播放端当前的预估带宽;k表示目标码率的档次,vr
k+1
表示档次为k+1的预上调码率;ε表示预上调系数,可根据实际应用进行取值,例如0.7;εvr
k+1
表示带宽阈值。
[0114]
在一个实施例中,参照图5,图5为一个实施例中视频码率切换方法的流程示意图。可以看到,在播放端播放视频流时,视频服务器或评估服务器接收播放端定期上报的视频流参数,根据预设次连续上报的视频流参数判断播放端当前的网络带宽状态和缓存状态,在当前的网络带宽状态和缓存状态满足码率档次预上调条件时,确定播放端当前的预估带宽,基于当前的预估带宽判定播放端对应预上调码率的预估网络带宽状态,在预估网络带宽状态也满足码率档次预上调条件时,指示播放端播放预上调码率的视频流。
[0115]
步骤s310,当预估网络带宽状态满足码率档次预上调条件时,指示播放端播放预上调码率的视频流。
[0116]
在一个实施例中,指示播放端播放预上调码率的视频流,包括:生成与播放端相对应的码率档次上调指令;将码率档次上调指令传递至视频服务器;码率档次上调指令用于指示视频服务器向播放端推送预上调码率的视频流。
[0117]
在一个实施例中,评估服务器在判定播放端可播放预上调码率的视频流时,生成与播放端相对应的码率档次上调指令,将码率档次上调指令传递至视频服务器,以指示视频服务器向播放端推送预上调码率的视频流。
[0118]
上述视频码率切换方法中,播放端在播放目标码率的视频流时,定期上报关于视频流的下载码率和本地缓存量,在接收到上报的关于视频流的下载码率和本地缓存量后,一方面,不仅可以基于连续上报的下载码率与目标码率之间的相对大小关系,判定播放端当前的网络带宽状态,另一方面,还可以基于连续上报的本地缓存量的相对变化,判定播放端当前的缓存状态。那么,在当前的网络带宽状态与当前的缓存状态满足关于视频流的码率档次预上调条件时,基于连续上报的下载码率确定播放端当前的预估带宽,在根据对目标码率上调档次后的预上调码率与当前的预估带宽之间的相对大小关系,判定播放端播放预上调码率的视频流时的预估网络带宽状态也满足码率档次预上调条件时,就可以指示播
放端播放预上调码率的视频流,这样,通过对播放端当前的网络带宽状态与预估网络带宽状态进行联合判定,同时考量播放端的缓存状态,提高了播放端上调视频码率的门槛,从而减少因码率切换频繁带来的影响,实现视频流畅度与视频质量之间的均衡。
[0119]
在一个实施例中,基于连续上报的下载码率与目标码率之间的相对大小关系,判定播放端当前的网络带宽状态,包括:统计连续上报的上报总次数以及上报的下载码率大于预期码率的上报次数;预期码率是根据目标码率确定的;根据上报次数与上报总次数之间的大小关系,判定播放端当前的网络带宽状态。
[0120]
在一个实施例中,视频服务器或评估服务器根据播放端当前的目标码率确定预期码率,预期码率用于判断播放端上报的下载码率是否达到当前预期,以根据下载码率的判断结果进一步判断播放端当前的网络带宽状态。
[0121]
在一个实施例中,预期码率的确定步骤包括:获取预设系数,将目标码率与预设系数之积作为预期码率。预设系数可根据实际应用进行设置,例如0.7、0.8等。
[0122]
在一个实施例中,预期码率的确定步骤包括:确定视频流当前对应的视频场景类型;获取与视频场景类型对应的预设系数;将目标码率与预设系数之积,作为预期码率。
[0123]
在一个实施例中,视频服务器或评估服务器可预先设置多于一种视频场景类型,例如相对运动场景与相对静止场景等。针对不同的视频场景类型设置对应的预设系数,例如相对运动场景对应的预设系数可以是0.8,相对静止场景对应的预设系数可以是0.7。
[0124]
在一个实施例中,播放端在播放目标码率的视频流时,视频服务器定期向评估服务器上报关于视频流的视频场景类型,评估服务器由此获得视频流当前对应的视频场景类型。
[0125]
本实施例中,通过对预设系数进行设置,获得能够准确区分预期下载码率和非预期下载码率的预期码率,从而提升对播放端当前的网络带宽状态的判断准确性。
[0126]
在一个实施例中,参照图6,图6中示出了一个实施例中确定播放端当前的网络带宽状态的示意图。可以看到,视频服务器或评估服务器将连续预设次上报作为一个上报批次,统计连续预设次上报的下载码率中,下载码率大于预期码率的上报次数,根据该上报次数与连续预设次上报对应的上报总次数之间的大小关系,判定播放端当前的网络带宽状态。
[0127]
在一个实施例中,视频服务器或评估服务器统计连续预设次上报的下载码率中,下载码率大于预期码率的上报次数,可通过以下公式进行表示:
[0128][0129][0130]
其中,num
bri
表示s次上报中下载码率大于预期码率的上报次数;valbri表示第i次上报的次数统计结果;bri表示第i次上报的下载码率;vrk表示目标码率,k表示目标码率的档次,表示预设系数,表示预期码率。
[0131]
在一个实施例中,视频服务器或评估服务器统计连续预设次上报的下载码率中,下载码率大于预期码率的上报次数,当该上报次数与上报总次数之间的比值大于预设的比
值时,判定当前的网络带宽状态为预期状态;当该上报次数与上报总次数之间的比值小于或等于预设的比值时,判定当前的网络带宽状态为非预期状态。
[0132]
在一个实施例中,视频服务器或评估服务器统计连续预设次上报的下载码率中,下载码率大于预期码率的上报次数,当该上报次数等于上报总次数时,说明连续预设次上报的下载码率均达到预期,判定当前的网络带宽状态为预期状态;当该上报次数小于上报总次数时,说明连续预设次上报的下载码率中存在未达到预期的下载码率,判定当前的网络带宽状态为非预期状态。可通过以下公式进行表示:
[0133][0134]
其中,status
bwt
表示播放端当前的网络带宽状态;num
bri
表示s次上报中下载码率大于预期码率的上报次数;s表示上报总次数;exp表示预期状态,unexp表示非预期状态。
[0135]
本实施例中,当下载码率大于预期码率的上报次数等于上报总次数时,判定当前的网络带宽状态为预期状态,能够提高对播放端当前的网络带宽状态达到预期的判定标准,避免后续频繁切换码率,引起视频卡顿的同时,降低视频质量。
[0136]
在一个实施例中,视频服务器或评估服务器也可以统计连续预设次上报的下载码率中,下载码率小于或等于预期码率的上报次数,根据该上报次数判定播放端当前的网络带宽状态,例如根据该上报次数与连续预设次上报对应的上报总次数之间的大小关系,判定播放端当前的网络带宽状态。
[0137]
在一个实施例中,视频服务器或评估服务器统计连续预设次上报的下载码率中,下载码率小于或等于预期码率的上报次数,当该上报次数为零时,说明连续预设次上报的下载码率均达到预期,视频服务器或评估服务器判定当前的网络带宽状态为预期状态;当该上报次数大于零时,说明连续预设次上报的下载码率中存在未达到预期的下载码率,视频服务器或评估服务器判定当前的网络带宽状态为非预期状态。
[0138]
本实施例中,当下载码率小于或等于预期码率的上报次数为零时,判定当前的网络带宽状态为预期状态,能够提高对播放端当前的网络带宽状态达到预期的判定标准,避免后续频繁切换码率,引起视频卡顿的同时,降低视频质量。
[0139]
在一个实施例中,根据变化量确定播放端当前的缓存充足状态,包括:确定连续上报的上报总次数中,本地缓存量大于缓存量上限值的达上限次数以及本地缓存量小于或等于缓存量下限值的达下限次数;根据本地缓存量间的变化量、达上限次数和达下限次数,确定当前的缓存充足状态。
[0140]
其中,缓存量上限值和缓存量下限值可根据实际的视频播放流畅度需求进行设定,例如缓存量上限值可以是200帧,缓存量下限值可以是10帧。
[0141]
在一个实施例中,参照图7,图7中示出了一个实施例中确定播放端当前的缓存充足状态的示意图。可以看到,视频服务器或评估服务器将连续预设次上报作为一个上报批次,基于连续预设次上报的本地缓存量,计算相邻两次上报间的本地缓存量间的变化量,并且,统计连续预设次上报的本地缓存量中,本地缓存量大于缓存量上限值的达上限次数以及本地缓存量小于或等于缓存量下限值的达下限次数,根据本地缓存量间的变化量、达上限次数和达下限次数确定播放端当前的缓存充足状态。
[0142]
在一个实施例中,视频服务器或评估服务器统计连续预设次上报的达上限次数,
可通过以下公式进行表示:
[0143][0144][0145]
其中,cn
vc
表示s次上报中本地缓存量大于缓存量上限值的达上限次数;表示第i次上报的达上限次数统计结果;vci表示第i次上报的本地缓存量;c
t
表示缓存量上限值。
[0146]
在一个实施例中,视频服务器或评估服务器统计连续预设次上报的达下限次数,可通过以下公式进行表示:
[0147][0148][0149]
其中,fn
vc
表示s次上报中本地缓存量小于或等于缓存量下限值的达下限次数;ψ(vci)表示第i次上报的达下限次数统计结果;vci表示第i次上报的本地缓存量;f
t
表示缓存量下限值。
[0150]
在一个实施例中,当达上限次数等于上报总次数时,判定当前的缓存状态为充足状态,当达下限次数等于上报总次数时,判定当前的缓存状态为非充足状态,其它情况判定为正常状态。
[0151]
在一个实施例中,当两两相邻的本地缓存量间的变化量表示连续上报的本地缓存量逐次上升时,判定当前的缓存状态为充足状态,当两两相邻的本地缓存量间的变化量表示连续上报的本地缓存量逐次下降时,判定当前的缓存状态为非充足状态,其它情况判定为正常状态。
[0152]
在一个实施例中,视频服务器或评估服务器统计两两相邻的本地缓存量间的变化量的上升次数和下降次数,可通过以下公式进行表示:
[0153][0154][0155]
其中,δ(vc
i+1-vci)和δ(vc
i-vc
i+1
)可通过以下公式进行计算:
[0156][0157]
其中,in
vc
表示s次上报中两两相邻的本地缓存量间的变化量的上升次数;vci表示第i次上报的本地缓存量,vc
i+1
表示第i+1次上报的本地缓存量;dn
vc
表示s次上报中两两相邻的本地缓存量间的变化量的下降次数;t表示变化量阈值,例如可取值为0~3。
[0158]
在一个实施例中,根据本地缓存量间的变化量、达上限次数和达下限次数,确定当前的缓存充足状态,包括:当两两相邻的本地缓存量间的变化量表示连续上报的本地缓存量逐次上升时,或者,当达上限次数等于上报总次数时,判定当前的缓存状态为充足状态;当两两相邻的本地缓存量间的变化量表示连续上报的本地缓存量逐次下降时,或者,当达下限次数等于上报总次数时,判定当前的缓存状态为非充足状态;其它情况判定为正常状态。可通过以下公式进行表示:
[0159][0160]
其中,status
bwt
表示播放端当前的缓存充足状态;s表示上报总次数;exp表示充足状态,unexp表示非充足状态,nor表示正常状态;cn
vc
表示s次上报中本地缓存量大于缓存量上限值的达上限次数;fn
vc
表示s次上报中本地缓存量小于或等于缓存量下限值的达下限次数;in
vc
表示s次上报中两两相邻的本地缓存量间的变化量的上升次数;dn
vc
表示s次上报中两两相邻的本地缓存量间的变化量的下降次数。
[0161]
可以理解,视频服务器或评估服务器也可以统计连续预设次上报的本地缓存量中,本地缓存量小于或等于缓存量上限值的未达上限次数,以及本地缓存量大于缓存量下限值的未达下限次数,根据本地缓存量间的变化量、未达上限次数和未达下限次数中的至少一个确定播放端当前的缓存充足状态。
[0162]
本实施例中,当两两相邻的本地缓存量间的变化量表示连续上报的本地缓存量逐次上升时,或者,当达上限次数等于上报总次数时,判定当前的缓存状态为充足状态,能够提高对播放端当前的缓存充足状态达到预期的判定标准,避免后续频繁切换码率,引起视频卡顿的同时,降低视频质量。
[0163]
在一个实施例中,基于连续上报的本地缓存量,计算两两相邻的本地缓存量间的波动量,包括:当相邻的本地缓存量中,在后上报的本地缓存量小于或等于预设上限值时,则确定相邻的本地缓存量间的波动量为相邻的本地缓存量之差的绝对值;当相邻的本地缓存量中,在后上报的本地缓存量大于预设上限值时,则确定相邻的本地缓存量之间的波动量为零。
[0164]
其中,预设上限值可根据实际的视频帧缓存稳定性需求进行设定。
[0165]
在一个实施例中,参照图8,图8中示出了一个实施例中确定播放端当前的缓存稳定状态的示意图。可以看到,视频服务器或评估服务器将连续预设次上报作为一个上报批次,先根据相邻的本地缓存量中在后上报的本地缓存量的大小,确定波动量的计算方式,接着根据本地缓存量间的波动量均值与预设阈值之间的大小关系,确定播放端当前的缓存稳定状态。
[0166]
在一个实施例中,当在后上报的本地缓存量小于或等于预设上限值时,则确定相邻的本地缓存量间的波动量为相邻的本地缓存量之差的绝对值,当在后上报的本地缓存量大于预设上限值时,则确定相邻的本地缓存量之间的波动量为零,可通过以下公式进行表示:
[0167]
[0168]
其中,δvcm表示本批次上报中的第m个波动量;vci表示第i次上报的本地缓存量,vc
i-1
表示第i-1次上报的本地缓存量;th
max
表示预设上限值。
[0169]
在一个实施例中,波动量均值可通过以下公式进行表示:
[0170][0171]
其中,表示本地缓存量间的波动量均值;n表示波动量数量;δvcm表示本批次上报中的n个总波动量中的第m个波动量。
[0172]
在一个实施例中,当连续上报的本地缓存量的波动量均值小于或等于预设阈值时,判定播放端当前的缓存状态为稳定状态,当连续上报的本地缓存量的波动量均值大于预设阈值时,判定播放端当前的缓存状态为非稳定状态,可通过以下公式进行表示:
[0173][0174]
其中,sv表示播放端当前的缓存稳定状态;exp表示稳定状态,unexp表示非稳定状态;表示本地缓存量间的波动量均值;th
vc
表示预设阈值,例如可取值为20帧。
[0175]
本实施例中,当连续上报的本地缓存量的波动量均值小于或等于预设阈值时,判定播放端当前的缓存状态为稳定状态,能够提高对播放端当前的缓存稳定状态达到预期的判定标准,避免后续频繁切换码率,引起视频卡顿的同时,降低视频质量。
[0176]
在一个实施例中,该方法还包括:当当前的网络带宽状态、当前的缓存状态连续预设次满足关于视频流的码率档次预上调条件,且每次预估网络带宽状态满足码率档次预上调条件时,指示播放端播放预上调码率的视频流。
[0177]
在一个实施例中,视频服务器或评估服务器将连续预设次上报作为一个上报批次,当连续预设个批次当前的网络带宽状态在均为预期状态,当前的缓存状态均为充足状态和稳定状态,且每次播放端对应预上调码率的预估网络带宽状态均为预期状态时,指示播放端播放预上调码率的视频流。
[0178]
本实施例中,提高播放端上调视频码率的门槛,减少因码率切换频繁带来的影响。
[0179]
在一个实施例中,该方法还包括:基于连续上报的本地缓存量,计算两两相邻的本地缓存量间的变化量,根据变化量确定播放端当前的缓存充足状态;当当前的网络带宽状态与当前的缓存充足状态中的至少一个满足关于视频流的码率档次预下调条件时,指示播放端播放目标码率对应的预下调码率的视频流。
[0180]
其中,预下调码率是根据目标码率确定的。视频服务器或评估服务器可将目标码率下调预设档后对应的转码码率作为预下调码率,预设档可以是一档等。
[0181]
在一个实施例中,当当前的网络带宽状态为非预期状态,和/或当前的缓存状态为非充足状态时,判定当前的网络带宽状态与当前的缓存充足状态中的至少一个满足码率档次预下调条件,从而保障视频的流畅播放。
[0182]
在一个实施例中,如图9所示,提供了一种视频码率切换方法,可应用于在线视频播放场景、直播视频播放场景,本实施例主要以该方法应用于上述图1中的视频服务器104
或者上述图2中的评估服务器108来举例说明,包括以下步骤:
[0183]
步骤s902,接收播放端在播放目标码率的视频流时定期上报的关于视频流的下载码率和本地缓存量,目标码率为多个档次的转码码率中的一种。
[0184]
步骤s904,统计连续上报的上报总次数以及上报的下载码率大于预期码率的上报次数,预期码率是根据目标码率确定的;当上报次数等于上报总次数时,判定当前的网络带宽状态为预期状态;当上报次数小于上报总次数时,判定当前的网络带宽状态为非预期状态。
[0185]
步骤s906,基于连续上报的本地缓存量,计算两两相邻的本地缓存量间的变化量;确定连续上报的上报总次数中,本地缓存量大于缓存量上限值的达上限次数以及本地缓存量小于或等于缓存量下限值的达下限次数;当两两相邻的本地缓存量间的变化量表示连续上报的本地缓存量逐次上升时,或者,当达上限次数等于上报总次数时,判定当前的缓存状态为充足状态;当两两相邻的本地缓存量间的变化量表示连续上报的本地缓存量逐次下降时,或者,当达下限次数等于上报总次数时,判定当前的缓存状态为非充足状态。
[0186]
步骤s908,当相邻的本地缓存量中,在后上报的本地缓存量小于或等于预设上限值时,则确定相邻的本地缓存量间的波动量为相邻的本地缓存量之差的绝对值;当相邻的本地缓存量中,在后上报的本地缓存量大于预设上限值时,则确定相邻的本地缓存量之间的波动量为零;当连续上报的本地缓存量的波动量均值小于或等于预设阈值时,判定播放端当前的缓存状态为稳定状态;当连续上报的本地缓存量的波动量均值大于预设阈值时,判定播放端当前的缓存状态为非稳定状态。
[0187]
步骤s910,当当前的网络带宽状态为预期状态,当前的缓存状态为充足状态和稳定状态时,确定连续上报的下载码率中的最大下载码率,将最大下载码率作为当前的预估带宽。
[0188]
步骤s912,获取为对视频流的码率档次进行上调所设置的预上调系数,根据预上调系数和目标码率对应的预上调码率确定带宽阈值,当当前的预估带宽大于带宽阈值时,判定播放端对应预上调码率的预估网络带宽状态为预期状态。
[0189]
步骤s914,当当前的网络带宽状态连续预设次为预期状态,当前的缓存状态连续预设次为充足状态和稳定状态,且预估网络带宽状态每次均为预期状态时,指示播放端播放预上调码率的视频流。
[0190]
在一个实施例中,当当前的网络带宽状态为非预期状态,和/或当前的缓存状态为非充足状态时,指示播放端播放预下调码率的视频流。
[0191]
可以理解,当播放端当前的网络带宽状态、当前的缓存状态与预估网络带宽状态未达到可以上调码率的条件,且播放端当前的网络带宽状态与当前的缓存状态也未达到可以下调码率的条件时,播放端保持当前的码率播放。
[0192]
在一个实施例中,提供了一种视频码率切换方法,主要包括s1视频流参数上报、s2预估带宽与双带宽状态判定、s3缓存区状态判定以及s4视频码率自适应调整的步骤,下面对上述步骤进行举例介绍。
[0193]
s1视频流参数上报:
[0194]
视频流参数上报主要包含两方面:(1)视频服务器对原始视频流进行多个档次转码后,每个视频流分别对应的转码码率;(2)播放端播放视频流时,每间隔时间t0上报t0内的
下载码率和缓存区的本地缓存帧数。
[0195]
s2预估带宽与双带宽状态判定:
[0196]
(1)播放端当前的网络带宽状态判定
[0197]
评估服务器将播放端的网络带宽状态划分为预期状态和非预期状态,基于连续s次上报的下载码率和当前播放的目标码率之间的相对关系,对播放端当前的网络带宽状态进行评估:
[0198][0199][0200]
其中,num
bri
表示s次上报中下载码率大于预期码率的上报次数;valbri表示第i次上报的次数统计结果;bri表示第i次上报的下载码率;vrk表示目标码率,k表示目标码率的档次;表示预设系数,相对运动场景对应的预设系数可以是0.8,相对静止场景对应的预设系数可以是0.7;表示预期码率。
[0201][0202]
其中,status
bwt
表示播放端当前的网络带宽状态;num
bri
表示s次上报中下载码率大于预期码率的上报次数;s表示上报总次数;exp表示预期状态,unexp表示非预期状态。
[0203]
(2)计算播放端当前的评估带宽
[0204]
视频服务器将原始视频流转换为多个档次的转码码率的视频流,对于播放端播放的视频流的目标码率,其档次为k,评估服务器利用最近s次上报中的最大下载码率作为目标码率对应的预估带宽:
[0205]
ebk=max(bri)0<i<s
[0206]
其中,ebk表示播放端当前的预估带宽,k表示目标码率的档次;bri表示第i次上报的下载码率;s表示上报总次数。
[0207]
(3)播放端的预估网络带宽状态判定
[0208]
若后续根据播放端当前的网络带宽状态与缓存区状态判定可以上调码率时,预估服务器判断播放端上调码率后的预估网络带宽状态:
[0209][0210]
其中,status
ept
表示播放端对应预上调码率的预估网络带宽状态;exp表示预期状态,unexp表示非预期状态;ebk表示播放端当前的预估带宽;k表示目标码率的档次,vr
k+1
表示档次为k+1的预上调码率;ε表示预上调系数,可根据实际应用进行取值,例如0.7;εvr
k+1
表示带宽阈值。s3缓存区状态判定
[0211]
评估服务器从充足性和稳定性两个维度衡量缓存区状态。
[0212]
(1)充足性是指本地缓存帧数是否足够充足,以支持视频的正常播放而不至于卡顿。
[0213]
评估服务器将播放端缓存区的状态划分为充足状态、非充足状态和正常状态。
[0214]
首先,评估服务器基于连续s次上报的本地缓存帧数,统计连续上升次数和连续下降次数:
[0215][0216][0217]
其中,δ(vc
i+1-vci)和δ(vc
i-vc
i+1
)可通过以下公式进行计算:
[0218][0219]
其中,in
vc
表示s次上报中两两相邻的本地缓存量间的变化量的上升次数;vci表示第i次上报的本地缓存量,vc
i+1
表示第i+1次上报的本地缓存量;dn
vc
表示s次上报中两两相邻的本地缓存量间的变化量的下降次数;t表示变化量阈值,例如可取值为0~3。
[0220]
接着,评估服务器基于连续s次上报的本地缓存帧数,统计达上限次数和达下限次数:
[0221][0222][0223]
其中,cn
vc
表示s次上报中本地缓存量大于缓存量上限值的达上限次数;表示第i次上报的达上限次数统计结果;vci表示第i次上报的本地缓存量;c
t
表示缓存量上限值。
[0224][0225][0226]
其中,fn
vc
表示s次上报中本地缓存量小于或等于缓存量下限值的达下限次数;ψ(vci)表示第i次上报的达下限次数统计结果;vci表示第i次上报的本地缓存量;f
t
表示缓存量下限值。
[0227]
最后,根据连续上升次数、连续下降次数、达上限次数和达下限次数确定播放端当前的缓存充足状态:
[0228][0229]
其中,status
bwt
表示播放端当前的缓存充足状态;s表示上报总次数;exp表示充足
状态,unexp表示非充足状态,nor表示正常状态;cn
vc
表示s次上报中本地缓存量大于缓存量上限值的达上限次数;fn
vc
表示s次上报中本地缓存量小于或等于缓存量下限值的达下限次数;in
vc
表示s次上报中两两相邻的本地缓存量间的变化量的上升次数;dn
vc
表示s次上报中两两相邻的本地缓存量间的变化量的下降次数。
[0230]
(2)稳定性是指本地缓存帧数的变化是否稳定。
[0231]
评估服务器将播放端缓存区的状态划分为稳定状态和非稳定状态。
[0232]
首先,评估服务器基于连续s次上报的本地缓存帧数,统计相邻两次上报的本地缓存帧数的波动量:
[0233][0234]
其中,δvcm表示本批次上报中的第m个波动量;vci表示第i次上报的本地缓存量,vc
i-1
表示第i-1次上报的本地缓存量;th
max
表示预设上限值。
[0235]
接着,评估服务器计算连续s次上报中的波动量均值:
[0236][0237]
其中,表示本地缓存量间的波动量均值;n表示波动量数量;δvcm表示本批次上报中的n个总波动量中的第m个波动量。
[0238]
最后,根据波动量均值与预设阈值之间的大小关系确定播放端当前的缓存稳定状态:
[0239][0240]
其中,sv表示播放端当前的缓存稳定状态;exp表示稳定状态,unexp表示非稳定状态;表示本地缓存量间的波动量均值;th
vc
表示预设阈值,例如可取值为20帧。
[0241]
s4视频码率自适应调整
[0242]
评估服务器将连续s次上报作为一个上报批次,当连续多个批次当前的网络带宽状态在均为预期状态,当前的缓存区状态均为充足状态和稳定状态,且播放端对应上调一档码率的预估网络带宽状态均为预期状态时,指示视频流码率由k档码率vrk上调至k+1档码率vr
k+1

[0243]
当当前的网络带宽状态为非预期状态,和/或当前的缓存区状态为非充足状态时,评估服务器指示视频流码率由k档码率vrk下调至k-1档码率vr
k-1
,以保障视频播放的流畅度。
[0244]
上述视频码率切换方法,播放端在播放目标码率的视频流时,定期上报关于视频流的下载码率和本地缓存量,在接收到上报的关于视频流的下载码率和本地缓存量后,一方面,不仅可以基于连续上报的下载码率与目标码率之间的相对大小关系,判定播放端当前的网络带宽状态,另一方面,还可以基于连续上报的本地缓存量的相对变化,判定播放端当前的缓存状态。那么,在当前的网络带宽状态与当前的缓存状态满足关于视频流的码率
档次预上调条件时,基于连续上报的下载码率确定播放端当前的预估带宽,在根据对目标码率上调档次后的预上调码率与当前的预估带宽之间的相对大小关系,判定播放端播放预上调码率的视频流时的预估网络带宽状态也满足码率档次预上调条件时,就可以指示播放端播放预上调码率的视频流,这样,通过对播放端当前的网络带宽状态与预估网络带宽状态进行联合判定,同时考量播放端的缓存状态,提高了播放端上调视频码率的门槛,从而减少因码率切换频繁带来的影响,实现视频流畅度与视频质量之间的均衡。
[0245]
应该理解的是,虽然上述流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,上述流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
[0246]
在一个实施例中,如图10所示,提供了一种视频码率切换装置,该装置可以采用软件模块或硬件模块,或者是二者的结合成为计算机设备的一部分,该装置具体包括:接收模块1002、网络带宽状态判定模块1004、缓存状态判定模块1006、预估网络带宽状态判定模块1008和指示模块1010,其中:
[0247]
接收模块1002,用于接收播放端在播放目标码率的视频流时定期上报的关于视频流的下载码率和本地缓存量,目标码率为多个档次的转码码率中的一种;
[0248]
网络带宽状态判定模块1004,用于基于连续上报的下载码率与目标码率之间的相对大小关系,判定播放端当前的网络带宽状态;
[0249]
缓存状态判定模块1006,用于基于连续上报的本地缓存量中两两相邻的本地缓存量间的变化量与波动量,判定播放端当前的缓存状态;
[0250]
预估网络带宽状态判定模块1008网络带宽状态判定模块1004,用于当当前的网络带宽状态与当前的缓存状态满足关于视频流的码率档次预上调条件时,根据连续上报的下载码率确定播放端当前的预估带宽,基于对目标码率上调档次后的预上调码率与当前的预估带宽之间的相对大小关系,判定播放端播放预上调码率的视频流时的预估网络带宽状态;
[0251]
指示模块1010,用于当预估网络带宽状态满足码率档次预上调条件时,指示播放端播放预上调码率的视频流。
[0252]
在一个实施例中,网络带宽状态判定模块1004还用于:统计连续上报的上报总次数以及上报的下载码率大于预期码率的上报次数;预期码率是根据目标码率确定的;根据上报次数与上报总次数之间的大小关系,判定播放端当前的网络带宽状态。
[0253]
在一个实施例中,网络带宽状态判定模块1004还用于:确定视频流当前对应的视频场景类型;获取与视频场景类型对应的预设系数;将目标码率与预设系数之积,作为预期码率。
[0254]
在一个实施例中,网络带宽状态判定模块1004还用于:当上报次数等于上报总次数时,判定当前的网络带宽状态为预期状态;当上报次数小于上报总次数时,判定当前的网络带宽状态为非预期状态。
[0255]
在一个实施例中,缓存状态判定模块1006还用于:基于连续上报的本地缓存量,计
算两两相邻的本地缓存量间的变化量,根据变化量确定播放端当前的缓存充足状态;基于连续上报的本地缓存量,计算两两相邻的本地缓存量间的波动量,根据波动量确定播放端当前的缓存稳定状态;根据当前的缓存充足状态和当前的缓存稳定状态,确定播放端当前的缓存状态。
[0256]
在一个实施例中,缓存状态判定模块1006还用于:确定连续上报的上报总次数中,本地缓存量大于缓存量上限值的达上限次数以及本地缓存量小于或等于缓存量下限值的达下限次数;根据本地缓存量间的变化量、达上限次数和达下限次数,确定当前的缓存充足状态。
[0257]
在一个实施例中,缓存状态判定模块1006还用于:当两两相邻的本地缓存量间的变化量表示连续上报的本地缓存量逐次上升时,或者,当达上限次数等于上报总次数时,判定当前的缓存状态为充足状态;当两两相邻的本地缓存量间的变化量表示连续上报的本地缓存量逐次下降时,或者,当达下限次数等于上报总次数时,判定当前的缓存状态为非充足状态。
[0258]
在一个实施例中,缓存状态判定模块1006还用于:当连续上报的本地缓存量的波动量均值小于或等于预设阈值时,判定播放端当前的缓存状态为稳定状态;当连续上报的本地缓存量的波动量均值大于预设阈值时,判定播放端当前的缓存状态为非稳定状态。
[0259]
在一个实施例中,缓存状态判定模块1006还用于:当相邻的本地缓存量中,在后上报的本地缓存量小于或等于预设上限值时,则确定相邻的本地缓存量间的波动量为相邻的本地缓存量之差的绝对值;当相邻的本地缓存量中,在后上报的本地缓存量大于预设上限值时,则确定相邻的本地缓存量之间的波动量为零。
[0260]
在一个实施例中,预估网络带宽状态判定模块1008还用于:确定连续上报的下载码率中的最大下载码率;将最大下载码率作为当前的预估带宽。
[0261]
在一个实施例中,指示模块1010还用于:获取为对视频流的码率档次进行上调所设置的预上调系数;根据预上调系数和目标码率对应的预上调码率,确定带宽阈值;当当前的预估带宽大于带宽阈值时,判定播放端对应预上调码率的预估网络带宽状态满足码率档次预上调条件。
[0262]
在一个实施例中,预估网络带宽状态判定模块1008还用于:当当前的网络带宽状态为预期状态,当前的缓存状态为充足状态和稳定状态时,判定当前的网络带宽状态与当前的缓存状态满足关于视频流的码率档次预上调条件。
[0263]
在一个实施例中,缓存状态判定模块1006还用于:基于连续上报的本地缓存量,计算两两相邻的本地缓存量间的变化量,根据变化量确定播放端当前的缓存充足状态;指示模块1010还用于:当当前的网络带宽状态为非预期状态,和/或当前的缓存状态为非充足状态时,判定当前的网络带宽状态与当前的缓存充足状态中的至少一个满足关于视频流的码率档次预下调条件,则指示播放目标码率对应的预下调码率的视频流。
[0264]
在一个实施例中,指示模块1010还用于:当当前的网络带宽状态、当前的缓存状态连续预设次满足关于视频流的码率档次预上调条件,且每次预估网络带宽状态满足码率档次预上调条件时,指示播放端播放预上调码率的视频流。
[0265]
在一个实施例中,指示模块1010还用于:生成与播放端相对应的码率档次上调指令;将码率档次上调指令传递至视频服务器;码率档次上调指令用于指示视频服务器向播
放端推送预上调码率的视频流。
[0266]
关于视频码率切换装置的具体限定可以参见上文中对于视频码率切换方法的限定,在此不再赘述。上述视频码率切换装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
[0267]
上述视频码率切换装置中,播放端在播放目标码率的视频流时,定期上报关于视频流的下载码率和本地缓存量,在接收到上报的关于视频流的下载码率和本地缓存量后,一方面,不仅可以基于连续上报的下载码率与目标码率之间的相对大小关系,判定播放端当前的网络带宽状态,另一方面,还可以基于连续上报的本地缓存量的相对变化,判定播放端当前的缓存状态。那么,在当前的网络带宽状态与当前的缓存状态满足关于视频流的码率档次预上调条件时,基于连续上报的下载码率确定播放端当前的预估带宽,在根据对目标码率上调档次后的预上调码率与当前的预估带宽之间的相对大小关系,判定播放端播放预上调码率的视频流时的预估网络带宽状态也满足码率档次预上调条件时,就可以指示播放端播放预上调码率的视频流,这样,通过对播放端当前的网络带宽状态与预估网络带宽状态进行联合判定,同时考量播放端的缓存状态,提高了播放端上调视频码率的门槛,从而减少因码率切换频繁带来的影响,实现视频流畅度与视频质量之间的均衡。
[0268]
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图11所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储视频码率切换数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种视频码率切换方法。
[0269]
本领域技术人员可以理解,图11中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0270]
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
[0271]
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
[0272]
在一个实施例中,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各方法实施例中的步骤。
[0273]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可
包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read-only memory,rom)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(random access memory,ram)或外部高速缓冲存储器。作为说明而非局限,ram可以是多种形式,例如静态随机存取存储器(static random access memory,sram)或动态随机存取存储器(dynamic random access memory,dram)等。
[0274]
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0275]
以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1