视频编码中的码率控制方法、装置、移动终端及存储介质
技术领域
本公开涉及媒体播放技术,尤其涉及一种视频编码中的码率控制方法、装置、移动终端及存储介质。
背景技术
相关技术中,移动终端基于视频客户端进行视频直播时,受网络影响,推流过程中会出现卡顿,用户体验差。
发明内容
有鉴于此,本公开实施例提供一种视频编码中的码率控制方法、装置、移动终端及存储介质。
第一方面,本公开实施例提供一种视频编码中的码率控制方法,所述方法包括:
获取统计周期内各个统计窗口的带宽预测参数,所述带宽预测参数用于表征对应统计窗口内的网络带宽利用率,所述统计周期包括至少两个统计窗口;
统计所述带宽预测参数的值未达到设定阈值的统计窗口的数量;
基于确定的所述统计窗口的数量,确定对应所述数量的用于调整码率的调整步长;
采用确定的所述调整步长,对当前的码率进行调整,以基于调整后的码率对采集的视频帧进行编码。
上述方案中,所述获取统计周期内各个统计窗口的带宽预测参数,包括:
对于统计周期内的每个统计窗口,执行如下操作:
获取当前统计窗口内发出的数据量、进入的数据量及当前囤积的数据量;
计算所述发出的数据量与所述进入的数据量及当前囤积的数据量之和的比值;
将计算得到的所述比值作为当前统计窗口的带宽预测参数。
上述方案中,所述基于确定的所述统计窗口的数量,确定对应所述数量的用于调整码率的调整步长,包括:
当所述数量超过预设的数量阈值时,确定对应所述数量的用于调整码率的调整步长为第一调整步长;
其中,所述第一调整步长用于基于所述第一调整步长的大小,调低当前码率。
上述方案中,所述方法还包括:
获取基于所述第一调整步长调整后的码率;
基于所述调整后的码率,更新可用带宽的最大值。
上述方案中,所述基于所述调整后的码率,更新可用带宽的最大值,包括:
根据如下公式更新可用带宽的最大值:
nest(Ti)=a*nest(Ti-1)+(1-a)est;
其中,Ti为第i个统计周期,i为大于1的正整数,nest(Ti)为第i个统计周期可用带宽的最大值Ti,est为当前码率,a为预设权重。
上述方案中,所述基于确定的所述统计窗口的数量,确定对应所述数量的用于调整码率的调整步长,包括:
当所述数量未超过预设的数量阈值时,计算当前的码率与当前可用带宽的最大值的比值;
确定所述比值所处的分段区间;
基于所述比值所处的分段区间,确定用于调整码率的调整步长。
上述方案中,所述基于所述比值所处的分段区间,确定用于调整码率的调整步长,包括:
若当前的码率与当前可用带宽的最大值的比值小于0.8,确定用于调整码率的调整步长为第二调整步长,所述第二调整步长用于基于所述第二调整步长的大小,调高当前码率;
若当前的码率与当前可用带宽的最大值的比值处于0.8与1.2之间,确定用于调整码率的调整步长为第三调整步长,所述第三调整步长小于所述第二调整步长,用于基于所述第三调整步长的大小,调高当前码率。
上述方案中,所述方法还包括:
响应于当前的码率与当前可用带宽的最大值的比值大于1.2,基于当前的码率,更新可用带宽的最大值。
第二方面,本公开实施例还提供一种视频编码中的码率控制装置,所述装置包括:
获取单元,用于获取统计周期内各个统计窗口的带宽预测参数,所述带宽预测参数用于表征对应统计窗口内的网络带宽利用率,所述统计周期包括至少两个统计窗口;
统计单元,用于统计所述带宽预测参数的值未达到设定阈值的统计窗口的数量;
确定单元,用于基于确定的所述统计窗口的数量,确定对应所述数量的用于调整码率的调整步长;
调整单元,用于采用确定的所述调整步长,对当前的码率进行调整,以基于调整后的码率对采集的视频帧进行编码。
上述方案中,所述获取单元,还用于对于统计周期内的每个统计窗口,执行如下操作:
获取当前统计窗口内发出的数据量、进入的数据量及当前囤积的数据量;
计算所述发出的数据量与所述进入的数据量及当前囤积的数据量之和的比值;
将计算得到的所述比值作为当前统计窗口的带宽预测参数。
上述方案中,所述确定单元,还用于当所述数量超过预设的数量阈值时,确定对应所述数量的用于调整码率的调整步长为第一调整步长;
其中,所述第一调整步长用于基于所述第一调整步长的大小,调低当前码率。
上述方案中,所述装置还包括:
第一更新单元,用于获取基于所述第一调整步长调整后的码率;
基于所述调整后的码率,更新可用带宽的最大值。
上述方案中,所述第一更新单元,还用于根据如下公式更新可用带宽的最大值:
nest(Ti)=a*nest(Ti-1)+(1-a)est;
其中,Ti为第i个统计周期,i为大于1的正整数,nest(Ti)为第i个统计周期可用带宽的最大值Ti,est为当前码率,a为预设权重。
上述方案中,所述确定单元,还用于当所述数量未超过预设的数量阈值时,计算当前的码率与当前可用带宽的最大值的比值;
确定所述比值所处的分段区间;
基于所述比值所处的分段区间,确定用于调整码率的调整步长。
上述方案中,所述确定单元,还用于若当前的码率与当前可用带宽的最大值的比值小于0.8,确定用于调整码率的调整步长为第二调整步长,所述第二调整步长用于基于所述第二调整步长的大小,调高当前码率;
若当前的码率与当前可用带宽的最大值的比值处于0.8与1.2之间,确定用于调整码率的调整步长为第三调整步长,所述第三调整步长小于所述第二调整步长,用于基于所述第三调整步长的大小,调高当前码率。
上述方案中,所述装置还包括:
第二更新单元,用于响应于当前的码率与当前可用带宽的最大值的比值大于1.2,基于当前的码率,更新可用带宽的最大值。
第三方面,本公开实施例还提供一种移动终端,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现本公开实施例提供的上述视频编码中的码率控制方法。
第四方面,本公开实施例还提供一种存储介质,存储有可执行指令,所述可执行指令被执行时,用于实现本公开实施例提供的上述视频编码中的码率控制方法。
应用本公开上述实施例具有以下有益效果:
应用本公开上述实施例,可基于网络带宽利用率周期性的对编码码率进行动态调整,使得在移动终端向服务器推流的过程中不会出现网络拥堵,保证推流的流畅度。
附图说明
图1为本公开实施例提供的视频编码中的码率控制方法的应用场景示意图;
图2为本公开实施例提供的移动终端的组成结构示意图;
图3为本公开实施例提供的视频编码中的码率控制方法的流程示意图;
图4为本公开实施例提供的视频编码中的码率控制方法的流程示意图;
图5为本公开实施例提供的视频编码中的码率控制模型示意图;
图6为本公开实施例提供的视频编码中的码率控制装置的组成结构示意图。
具体实施方式
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
除非另有定义,本文所使用的所有的技术和科学术语与属于本公开实施例的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述具体的实施例的目的,不是旨在限制本公开实施例。
本公开实施例提供的附图中的流程图和框图,图示了按照本公开实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
对本公开实施例进行进一步详细说明之前,对本公开实施例中涉及的名词和术语进行说明,本公开实施例中涉及的名词和术语适用于如下的解释。
1)码率,即比特率,数据传输时单位时间传送的数据位数,亦可理解为取样率,单位时间内取样率越大,精度就越高,编码得到的视频文件就越接近原始文件,也就是说画面的细节越丰富,视频编码的码率大小影响视频画面质量。
2)带宽,即网络带宽,指单位时间(一般指的是1秒钟)内能传输的数据量,即数据传输率,在本实施例中指上行网络带宽。
3)统计窗口,即时间窗口,例如,一个统计窗口为1秒。
4)响应于,用于表示所执行的操作所依赖的条件或者状态,当满足所依赖的条件或状态时,所执行的一个或多个操作可以是实时的,也可以具有设定的延迟;在没有特别说明的情况下,所执行的多个操作不存在执行先后顺序的限制。
参见图1,图1是本公开实施例提供的视频编码中的码率控制方法的一个可选的应用场景示意图,为实现支撑一个示例性应用,移动终端10(示例性示出了移动终端10-1和移动终端10-2)通过网络20连接服务器30,网络20可以是广域网或者局域网,又或者是二者的组合,使用无线链路实现数据传输。
移动终端10-1上设置有视频客户端(如视频直播客户端),移动终端基于视频客户端采集视频帧(如采集直播视频流),基于当前的编码码率对采集的视频帧进行编码,并获取统计周期内各个统计窗口的带宽预测参数(带宽预测参数用于表征对应统计窗口内的网络带宽利用率),基于带宽预测参数的值达到设定阈值的统计窗口的数量,确定相应的调整步长,采用确定的调整步长对当前的码率进行调整,以基于调整后的码率对采集的视频帧进行编码,并发送编码后的数据给服务器30。如此循环执行,在对直播视频流编码的过程中,基于当前的网络带宽利用率对视频的编码码率动态调整,使得在移动终端向服务器推流的过程中不会出现网络拥堵,保证推流的流畅度。
相应的,服务器30用于接收移动终端10-1发送的编码数据,以及移动终端10-2发送的视频数据请求,响应于移动终端10-2的视频数据请求,发送所述编码数据至移动终端10-2,移动终端10-2进行解码,基于移动终端10-2上的视频客户端,通过图形界面110-2进行视频播放。
参见图2,图2是本公开实施例提供的移动终端的组成结构示意图。在本公开实施例中,移动终端包括但不限于诸如移动电话、个人数字助理(PDA,PersonalDigitalAssistant)、平板电脑(PAD)、便携式多媒体播放器(PMP,Portable Media Player)、车载终端(例如车载导航终端)等等的移动终端。图2示出的移动终端仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图2所示,移动终端可以包括处理装置(例如中央处理器、图形处理器等)210,其可以根据存储在只读存储器(ROM,Read-Only Memory)220中的程序或者从存储装置280加载到随机访问存储器(RAM,Random Access Memory)230中的程序而执行各种适当的动作和处理。在RAM 230中,还存储有移动终端操作所需的各种程序和数据。处理装置210、ROM 220以及RAM230通过总线240彼此相连。输入/输出(I/O,Input/Output)接口250也连接至总线240。
通常,以下装置可以连接至I/O接口250:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置260;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置270;包括例如磁带、硬盘等的存储装置280;以及通信装置290。通信装置290可以允许移动终端与其他设备进行无线或有线通信以交换数据。虽然图2示出了具有各种装置的移动终端,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,所提供的流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,计算机程序可以通过通信装置290从网络上被下载和安装,或者从存储装置280被安装,或者从ROM220被安装。在计算机程序被处理装置210执行时,执行本公开实施例的方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
在本公开实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开实施例中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、射频(RF)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述移动终端中所包含的;也可以是单独存在,而未装配入移动终端中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该移动终端执行时,使得移动终端执行本公开实施例提供的上述视频文件的处理方法。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(LAN)和广域网(WAN),以连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
描述于本公开实施例中所涉及到的单元和/或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。
对于硬件的方式来说,实现本公开实施例的移动终端的单元和/或模块可以被一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,ComplexProgrammable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable GateArray)或其他电子元件实现,用于执行实现本公开实施例提供的方法。
图3为本公开实施例提供的视频编码中的码率控制方法的流程示意图,参见图3,本公开实施例的视频编码中的码率控制方法包括:
步骤301:获取统计周期内各个统计窗口的带宽预测参数。
这里,一个统计周期包括N个统计窗口,N为正整数,N的值可以依据实际需要进行设定,例如N取8;在实际应用中,统计窗口的时长可依据实际需要进行设定,如一个统计窗口的时间为1秒,一个统计周期内的统计窗口可以为连续的,如每个统计窗口均为1秒,8个统计窗口为一个统计周期,或者统计周期内的统计窗口为不连续的,如相邻的统计窗口之间间隔1秒,则对于统计窗口为1秒情况,一个包含8个统计窗口的统计周期为16秒。
在一实施例中,对于某个统计窗口来说,可通过如下方式得到该统计窗口的带宽预测参数:
获取当前统计窗口内发出的数据量、进入的数据量及当前囤积的数据量;计算所述发出的数据量与所述进入的数据量及当前囤积的数据量之和的比值;将计算得到的所述比值作为当前统计窗口的带宽预测参数。
其中,所述发出的数据量,指的是在该统计窗口内发送至服务器的编码数据量;所述进入的数据量,指的是在该统计窗口内编码器编码完成发送过来的编码数据量;所述当前囤积的数据量,指的是截止到当前时间接收到编码器发送的但还未发送至服务器的数据量。
在实际应用中,通过获取统计窗口的带宽预测参数,即计算发出的数据量/(所述进入的数据量+当前囤积的数据量)的值,可知当前统计窗口内的网络带宽利用率,发出的数据量越少、进入的数据量和/或当前囤积的数据量越多,可知网络越拥堵,可用网络带宽的利用率越高。
步骤302:统计所述带宽预测参数的值未达到设定阈值的统计窗口的数量。
在实际实施时,依据实际需要针对带宽预测参数的值设定一个阈值,例如,设定阈值为0.8,当带宽预测参数的值未达到0.8时,可认为当前统计窗口内的网络带宽利用率高,已达到瓶颈,而统计未达到设定阈值的统计窗口的数量可准确的预测当前的网络带宽利用率情况。
步骤303:基于确定的所述统计窗口的数量,确定对应所述数量的用于调整码率的调整步长。
这里,在实际实施时,对未达到设定阈值的统计窗口的数量设定一个数量阈值,而数量阈值的大小可依据实际需要进行设定,例如设定数量阈值为N/2,N为统计周期内统计窗口的数量。
当所述数量超过预设的数量阈值时,确定对应所述数量的用于调整码率的调整步长为第一调整步长;其中,所述第一调整步长用于基于所述第一调整步长的大小,调低当前码率。
示例性地,N=8,当带宽预测参数的值未达到0.8的统计窗口的数量超过4个时,确定第一调整步长为-20kb,指示将当前的码率调低,调低的大小为20kb,如当前的码率为1000kbps,则调整后的码率为980kbps。
在实际应用中,当首次遇到未达到设定阈值的统计窗口的数量超过预设的数量阈值时,表明当前的网络已遇到瓶颈,可根据统计周期内发送至服务器的总的编码数据量及发送时间,预测可用网络带宽的最大值。而在后续编码数据发送过程中,再次遇到未达到设定阈值的统计窗口的数量超过预设的数量阈值的情况时,执行以下操作:获取基于所述第一调整步长调整后的码率,基于所述调整后的码率,更新可用带宽的最大值。
在一实施例中,可通过如下方式更新可用带宽的最大值:
nest(Ti)=a*nest(Ti-1)+(1-a)est;(1)
其中,Ti为第i个统计周期,i为大于1的正整数,nest(Ti)为第i个统计周期预测得到的可用带宽的最大值,nest(Ti-1)为第i-1个统计周期预测得到的可用带宽的最大值,i为大于1的正整数,est为当前码率,a为预设权重。
在一实施例中,当未达到设定阈值的统计窗口的数量未超过预设的数量阈值时,计算当前的码率与当前可用带宽的最大值的比值;确定所述比值所处的分段区间;基于所述比值所处的分段区间,确定用于调整码率的调整步长。
未达到设定阈值的统计窗口的数量未超过预设的数量阈值,表明当前的带宽利用率较低,具体地,若当前编码器采用的码率(est)与当前可用带宽的最大值(peak)的比值小于0.8,确定用于调整码率的调整步长为第二调整步长,所述第二调整步长用于基于所述第二调整步长的大小,调高当前码率。在实际实施时,est/peak的值小于0.8时,表明当前的码率还存在很大的上调空间,采用较大的调整步长快速上调,例如第二调整步长的大小可以为20kb。
若当前的码率与当前可用带宽的最大值的比值处于0.8与1.2之间,确定用于调整码率的调整步长为第三调整步长,所述第三调整步长小于所述第二调整步长,用于基于所述第三调整步长的大小,调高当前码率。在实际实施时,est/peak的值处于0.8与1.2之间时,表明当前的码率存在上调空间,但上调空间较小,需要慢调,即采用较小的调整步长调高当前编码器的码率。
若当前的码率与当前可用带宽的最大值的比值大于1.2时,表明当前可用带宽的最大值需要更新,而更新方式可采用上述公式(1)。
步骤304:采用确定的所述调整步长对当前的码率进行调整,以基于调整后的码率对采集的视频帧进行编码。
这里,基于调整步长对当前编码器的码率调整后,使得编码器基于调整后的码率对采集的视频帧进行编码,并发送编码后的数据发送至服务器。
应用本公开上述实施例,可基于网络带宽利用率周期性的对编码码率进行动态调整,使得在移动终端向服务器推流的过程中不会出现网络拥堵,保证推流的流畅度。
接下来图4为本公开实施例提供的视频编码中的码率控制方法的流程示意图,图5为本公开实施例提供的视频编码中的码率控制模型示意图,结合图4、图5,本公开实施例的视频编码中的码率控制方法包括:
步骤401:移动终端通过视频客户端进行视频直播过程中,实时采集视频帧,得到直播视频流。
这里,在实际应用中,移动终端作为视频直播的直播端,在用户进行直播时进行视频流采集,视频帧进入编码器后基于当前的编码码率被编码。在移动终端基于视频客户端刚开始直播时,所采用的码率为预设值,直至后续预测得到网络可用带宽的最大值后,基于预测得到的网络可用带宽的最大值周期性的对码率进行动态调整。
步骤402:获取统计周期内各个统计窗口的带宽预测参数。
在本实施例中,统计周期包括8个统计窗口,8个统计窗口连续,每个统计窗口的时长为1秒。
在实际实施时,可通过如下方式得到每个统计窗口的带宽预测参数:
获取当前统计窗口内发出的数据量、进入的数据量及当前囤积的数据量;计算所述发出的数据量与所述进入的数据量及当前囤积的数据量之和的比值;将计算得到的所述比值作为当前统计窗口的带宽预测参数。
步骤403:统计所述带宽预测参数的值小于0.8的统计窗口的数量。
步骤404:判断所述数量是否大于4,如果大于4,执行步骤405a及步骤405b;如果不大于4,执行步骤406。
这里,当带宽预测参数的值小于0.8的统计窗口的数量大于4时,表明当前的网络带宽遇到瓶颈,为保证推流的流畅性,需要调低码率。
步骤405a:采用第一调整步长,调低码率,执行步骤405b及步骤408。
在实际应用中,第一调整步长的大小可依据实际需要进行设定,如20kb。
这里,需要说明的是,步骤405b及步骤408为并行处理的两个线程,移动终端在采用调低后的码率更新可用带宽的最大值的同时,可采用调低后的码率进行视频编码。
步骤405b:基于调低后的码率,更新可用带宽的最大值。
在一实施例中,可通过如下方式更新可用带宽的最大值:
nest(Ti)=a*nest(Ti-1)+(1-a)est; (1);
其中,Ti为第i个统计周期,i为大于1的正整数,nest(Ti)为第i个统计周期预测得到的可用带宽的最大值,nest(Ti-1)为第i-1个统计周期预测得到的可用带宽的最大值,i为大于1的正整数,est为当前码率,也即采用第一调整步长调低后的码率,a为预设权重。
步骤406:计算当前的码率与当前可用带宽的最大值的比值。
步骤407a:确定所述比值小于0.8时,采用第二调整步长调高当前码率,执行步骤408。
在实际应用中,第二调整步长的大小可依据实际需要进行设定。
步骤407b:确定所述比值处于0.8与1.2之间,采用第三调整步长调高当前码率,执行步骤408。
在实际应用中,第三调整步长的大小可依据实际需要进行设定。
步骤407c:确定所述比值大于1.2,执行步骤405b。
步骤408:基于调整后的码率对采集的视频帧进行编码,并发送编码数据至服务器。
图6为本公开实施例提供的视频编码中的码率控制装置的组成结构示意图,如图6所示,本公开实施例提供的视频编码中的码率控制装置包括:
获取单元61,用于获取统计周期内各个统计窗口的带宽预测参数,所述带宽预测参数用于表征对应统计窗口内的网络带宽利用率,所述统计周期包括至少两个统计窗口;
统计单元62,用于统计所述带宽预测参数的值未达到设定阈值的统计窗口的数量;
确定单元63,用于基于确定的所述统计窗口的数量,确定对应所述数量的用于调整码率的调整步长;
调整单元64,用于采用确定的所述调整步长,对当前的码率进行调整,以基于调整后的码率对采集的视频帧进行编码。
在一实施例中,所述获取单元,还用于对于统计周期内的每个统计窗口,执行如下操作:
获取当前统计窗口内发出的数据量、进入的数据量及当前囤积的数据量;
计算所述发出的数据量与所述进入的数据量及当前囤积的数据量之和的比值;
将计算得到的所述比值作为当前统计窗口的带宽预测参数。
在一实施例中,所述确定单元,还用于当所述数量超过预设的数量阈值时,确定对应所述数量的用于调整码率的调整步长为第一调整步长;
其中,所述第一调整步长用于基于所述第一调整步长的大小,调低当前码率。
在一实施例中,所述装置还包括:
第一更新单元,用于获取基于所述第一调整步长调整后的码率;
基于所述调整后的码率,更新可用带宽的最大值。
在一实施例中,所述第一更新单元,还用于根据如下公式更新可用带宽的最大值:
nest(Ti)=a*nest(Ti-1)+(1-a)est; (1)
其中,Ti为第i个统计周期,i为大于1的正整数,nest(Ti)为第i个统计周期可用带宽的最大值,est为当前码率,a为预设权重。
在一实施例中,所述确定单元,还用于当所述数量未超过预设的数量阈值时,计算当前的码率与当前可用带宽的最大值的比值;
确定所述比值所处的分段区间;
基于所述比值所处的分段区间,确定用于调整码率的调整步长。
在一实施例中,所述确定单元,还用于若当前的码率与当前可用带宽的最大值的比值小于0.8,确定用于调整码率的调整步长为第二调整步长,所述第二调整步长用于基于所述第二调整步长的大小,调高当前码率;
若当前的码率与当前可用带宽的最大值的比值处于0.8与1.2之间,确定用于调整码率的调整步长为第三调整步长,所述第三调整步长小于所述第二调整步长,用于基于所述第三调整步长的大小,调高当前码率。
在一实施例中,所述装置还包括:
第二更新单元,用于响应于当前的码率与当前可用带宽的最大值的比值大于1.2,基于当前的码率,更新可用带宽的最大值。
在一实施例中,所述装置还包括:
编码单元,用于基于调整后的码率对采集的视频帧进行编码。
相应的,在一实施例中,所述装置还包括:
发送单元,用于发送编码后的数据至服务器。
这里需要指出的是:以上涉及视频编码中的码率控制装置的描述,与上述视频编码中的码率控制方法描述是类似的,同方法的有益效果描述,不做赘述。对于本公开所述视频编码实施例中未披露的技术细节,请参照本公开方法实施例的描述。
本公开实施例还提供了一种可读存储介质,存储介质可以包括:移动存储设备、随机存取存储器(RAM,Random Access Memory)、只读存储器(ROM,Read-Only Memory)、磁碟或者光盘等各种可以存储程序代码的介质。所述可读存储介质存储有可执行指令;
所述可执行指令,用于被处理器执行时实现本公开实施例提供的视频编码方法。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以所述权利要求的保护范围为准。