一种视频编码方法、装置、设备及存储介质
文献发布时间:2024-04-18 20:01:23
技术领域
本发明涉及视频编码领域,尤其涉及一种视频编码方法、装置、设备及存储介质。
背景技术
在视频编码技术中,码率控制决定了编码器为各个视频帧分配的比特数,是平衡码率和视频画面质量的重要工具。目前,在许多需要将视频内容实时编码成码流并即时传输的场景中,多是使用硬件编码器进行平均码率控制,但这种平均码率控制方案无法基于视频内容分配码率,而是统一设置码率,这样导致简单的画面和复杂的画面都按照该统一设置的码率进行编码,造成一定的码率浪费,同时使用硬件编码进行码率控制缺乏灵活性,业务外层传入多少码率就按多少码率去编,无法及时响应业务层对可用带宽的策略调整。
发明内容
本发明实施例所要解决的技术问题在于,提供一种视频编码方法、装置、设备及存储介质,实现了基于视频内容进行多层码率控制,且响应带宽的调整,节省资源成本。
第一方面,本发明实施例提供了一种视频编码方法,包括:
在获取到目标码流中的目标帧时,确定所述目标帧的码率下限值,所述目标帧在所述码率下限值下的画面质量达到预设质量阈值;
将用于播放所述目标码流的计算机设备的当前网络带宽与预设码率上限值进行比较,得到比较结果;
基于所述比较结果,对所述预设码率上限值进行调整,得到所述目标帧的码率上限值;
基于所述目标帧的码率上限值和所述目标帧的码率下限值,确定所述目标帧的码率,所述目标帧的码率大于等于所述目标帧的码率下限值,且小于等于所述目标帧的码率上限值;
基于所述目标帧的码率,对所述目标帧进行编码,得到编码后的目标帧。
可见,本申请实施例中,获取目标码流中的目标帧后,确定目标帧的码率下限值,该目标帧在该码率下限值下的画面质量达到预设质量阈值,且将用于播放该目标码流的计算机设备的当前网络带宽与预设码率上限值进行比较,得到比较结果,基于该比较结果,对该预设码率上限值进行调整,得到该目标帧的码率上限值,基于该目标帧的码率上限值和该目标帧的码率下限值,确定该目标帧的码率,使该目标帧的码率大于等于该目标帧的码率下限值,且小于等于该目标帧的码率上限值,由于该目标帧的码率大于等于该目标帧的码率下限值,因此无论该目标帧的画面内容复杂或简单都可以保证质量下限,且由于该目标帧的码率小于等于该目标帧的码率上限值,因此基于该目标帧的码率,对该目标帧进行编码,得到的编码后的目标帧符合当前带宽状况。基于此,本申请实施例可以对画面内容复杂的视频帧在符合当前带宽状况的情况下分配更多的码率,而对画面内容简单的视频帧在保证画面质量下限的情况下分配更少的码率,实现了基于视频内容进行多层码率控制,且响应带宽的调整,节省资源成本。
在一种可选的实施方式中,基于所述比较结果,对所述预设码率上限值进行调整,得到所述目标帧的码率上限值,包括:
若所述比较结果指示所述当前网络带宽小于所述预设码率上限值,则对所述预设码率上限值进行降低调整,得到所述目标帧的码率上限值,所述目标帧的码率上限值大于所述目标帧的码率下限值,且小于等于所述当前网络带宽。
在一种可选的实施方式中,基于所述比较结果,对所述预设码率上限值进行调整,得到所述目标帧的码率上限值,包括:
若所述比较结果指示所述当前网络带宽大于等于所述预设码率上限值,则将所述预设码率上限值确定为所述目标帧的码率上限值。
在一种可选的实施方式中,确定所述目标帧的码率下限值,包括:
获取所述目标帧的前N帧的画面质量表征参数;
若所述前N帧中的至少一帧的画面质量表征参数超出预设画面质量表征参数范围,则确定所述目标帧的画面质量表征参数,所述目标帧的画面质量表征参数位于所述预设画面质量表征参数范围内;
基于所述目标帧的画面质量表征参数,确定所述目标帧的码率下限值,所述目标帧的码率下限值和所述目标帧的画面质量表征参数呈负相关趋势。
在一种可选的实施方式中,基于所述目标帧的码率上限值和所述目标帧的码率下限值,确定所述目标帧的码率,包括:
获取所述目标帧的编码质量系数;
调用所述编码器对所述目标帧进行图像内容进行分析,得到所述编码质量系数对应的参考量化参数;
基于所述参考量化参数,确定所述编码质量系数对应的参考码率;
基于所述目标帧的码率上限值,所述目标帧的码率下限值和所述参考码率,确定所述目标帧的码率,所述目标帧的码率大于等于所述目标帧的码率下限值,小于等于所述目标帧的码率上限值,且所述目标帧的码率与所述参考码率的差值小于目标码率与所述参考码率的差值,所述目标码率为大于等于所述目标帧的码率下限值且小于等于所述目标帧的码率上限值的除所述目标帧的码率以外的任一码率。
在一种可选的实施方式中,基于所述目标帧的码率上限值和所述目标帧的码率下限值,确定所述目标帧的码率,包括:
获取所述目标帧的编码质量系数;
调用编码器对所述目标帧进行图像内容进行分析,得到所述编码质量系数对应的参考量化参数;
基于所述目标帧的码率上限值确定所述码率上限值对应的量化参数上限值,并基于所述目标帧的码率下限值确定所述码率下限值对应的量化参数下限值;
基于所述量化参数上限值,所述量化参数下限值和所述参考量化参数,确定所述目标帧的优化量化参数,所述目标帧的优化量化参数大于等于所述量化参数下限值,小于等于所述量化参数上限值,且所述优化量化参数与所述参考量化参数的差值小于目标量化参数与所述参考量化参数的差值,所述目标量化参数为大于等于所述量化参数下限值且小于等于所述量化参数上限值的除所述优化量化参数以外的任一量化参数。
基于所述优化量化参数,确定所述目标帧的码率。
在一种可选的实施方式中,获取所述目标帧的编码质量系数,包括:
获取所述目标帧的前M帧的峰值信噪比;
若获取到的任一个峰值信噪比小于预设比例阈值,则对所述目标帧的上一帧的编码质量系数进行调整,得到所述目标帧的编码质量系数,所述目标帧的编码质量系数小于所述上一帧的编码质量系数。
第二方面,本发明实施例提供了一种视频编码装置,包括:
确定单元,用于在获取到目标码流中的目标帧时,确定所述目标帧的码率下限值,所述目标帧在所述码率下限值下的画面质量达到预设质量阈值;
比较单元,用于将用于播放所述目标码流的计算机设备的当前网络带宽与预设码率上限值进行比较,得到比较结果;
调整单元,用于基于所述比较结果,对所述预设码率上限值进行调整,得到所述目标帧的码率上限值;
所述确定单元,还用于基于所述目标帧的码率上限值和所述目标帧的码率下限值,确定所述目标帧的码率,所述目标帧的码率大于等于所述目标帧的码率下限值,且小于等于所述目标帧的码率上限值;
编码单元,用于基于所述目标帧的码率,对所述目标帧进行编码,得到编码后的目标帧。
第三方面,本发明实施例提供了一种服务器,该服务器包括存储器、通信接口以及处理器,其中,存储器、通信接口和处理器相互连接;存储器存储有计算机程序,处理器调用所述存储器中存储的计算机程序,用于实现上述第一方面所述的方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时实现第一方面所述的方法。
第五方面,本发明实施例提供了一种计算机程序产品,该计算机程序产品包括计算机程序代码,当该计算机程序代码在计算机上运行时,使得计算机执行上述第一方面所述的方法。
第六方面,本发明实施例提供了一种计算机程序,该计算机程序包括计算机程序代码,当该计算机程序代码在计算机上运行时,使得计算机执行上述第一方面所述的方法。
附图说明
为了更清楚地说明本发明实施例或背景技术中的技术方案,下面将对本发明实施例或背景技术中所需要使用的附图进行说明。
图1是本申请实施例提供的一种视频编码方法流程图;
图2是本申请实施例提供的一种视频编码质量稳定的方法流程图;
图3是本申请实施例提供的一种获取目标帧的编码质量系数的流程图;
图4是本申请实施例提供另一种视频编码质量稳定的方法流程图;
图5是本申请实施例提供的一种直播视频编码器的码率控制流程图;
图6是本申请实施例提供的一种直播视频编码器的码率控制方法应用时序图;
图7是本申请实施例提供的一种视频编码装置的示意图;
图8是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面结合本发明实施例中的附图对本发明实施例进行描述。
下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素,此外,本申请不同实施例中具有同样命名的部件、特征、要素可能具有相同含义,也可能具有不同含义,其具体含义需以其在该具体实施例中的解释或者进一步结合该具体实施例中上下文进行确定。
应当理解,尽管在本文可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本文范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语"如果"可以被解释成为"在……时"或"当……时"或"响应于确定"。再者,如同在本文中所使用的,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文中有相反的指示。应当进一步理解,术语“包含”、“包括”表明存在所述的特征、步骤、操作、元件、组件、项目、种类、和/或组,但不排除一个或多个其他特征、步骤、操作、元件、组件、项目、种类、和/或组的存在、出现或添加。本申请使用的术语“或”、“和/或”、“包括以下至少一个”等可被解释为包括性的,或意味着任一个或任何组合。例如,“包括以下至少一个:A、B、C”意味着“以下任一个:A;B;C;A和B;A和C;B和C;A和B和C”,再如,“A、B或C”或者“A、B和/或C”意味着“以下任一个:A;B;C;A和B;A和C;B和C;A和B和C”。仅当元件、功能、步骤或操作的组合在某些方式下内在地互相排斥时,才会出现该定义的例外。
应该理解的是,虽然本申请实施例中的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
取决于语境,如在此所使用的词语“如果”、“若”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
需要说明的是,在本申请中,采用了诸如S201、S202等步骤代号,其目的是为了更清楚简要地表述相应内容,不构成顺序上的实质性限制,本领域技术人员在具体实施时,可能会先执行S202后执行S201等,但这些均应在本申请的保护范围之内。
由于本申请实施例提供的一种视频编码方法可以在控制多种参数保证视频的编码质量的基础上反向控制码率,以实现基于视频内容进行多层码率控制的目标,因此先对本申请实施例中提及的多个编码参数进行介绍。
码率(Bitrate)是指在数字数据传输或存储中,每秒传输的比特数(bits persecond,bps),用于衡量数据传输速率或数据流的速度。在视频编码中,码率表示单位时间内传输或处理的比特数,用于描述视频信号的压缩程度和数据量大小。
编码质量系数(Constant Rate Factor,CRF)是一种常用于视频编码中的参数,用于控制压缩质量和码率之间的权衡关系。在使用 CRF 进行视频编码时,编码器会根据目标CRF 值自动调整比特率,以尽量保持一致的质量。较低的 CRF 值表示较高的质量,而较高的 CRF 值表示较低的质量,同时较低的 CRF 值会需要更高的码率,而较高的 CRF 值则会需要更低的码率。使用 CRF 进行视频编码时,编码器会自动调整码率以尽量满足目标 CRF值。即在相同的 CRF 值下,具有更复杂内容的视频可能会产生较高的码率,而较简单的内容则可能会产生较低的码率。
峰值信噪比(Peak Signal-to-Noise Ratio,PSNR)是一种常用的评估图像或视频质量的指标,可以通过计算原始图像和编码后图像之间的峰值信噪比来量化它们之间的差异,它衡量了原始信号与经过压缩或失真处理后的信号之间的峰值信噪比。较高的PSNR值表示编码后图像与原始图像之间的差异较小,反映出较好的视频质量,较低的PSNR值表示编码后图像与原始图像之间的差异较大,反映出较差的视频质量。
量化参数(Quantization Parameter,QP)是视频编码中的一个参数,用于控制视频编码过程中的压缩率和图像质量。在视频编码中,量化是指将图像转换为频域表示(如离散余弦变换)后,对频域系数进行量化(即精度损失),从而减少数据量。量化参数决定了量化的程度,通常以一个整数值表示。较低的量化参数表示较高的精度和较少的信息损失,因此会产生更高的图像质量,增加编码后的数据量,从而导致较高的码率。较高的量化参数则会产生更高的压缩比率,导致图像质量降低和可见的失真,码率也相应较低。
分辨率(Resolution)表示视频的像素数量,通常以宽度×高度的形式表示。较高的分辨率可以提供更清晰的图像细节,但会增加数据量和码率,降低分辨率可以减少数据量和码率,但也会导致图像的清晰度下降。
本申请实施例提供的一种视频编码方法可以应用在包括直播、视频通话、视频会议等即时编码即时传输等场景。以一种直播场景为例,本申请实施例提供的一种视频编码方法可以实时接收主播端传输的视频码流,基于该视频码流中每一帧的不同内容,对该视频码流中的每一帧分配不同的码率,每一帧分配的码率在保证每一帧画面的质量下限对应的最低码率与不大于当前网络环境的可用带宽对应的最大码率之间确定,使内容复杂的视频帧用更多码率进行编码,内容简单的视频帧用更少的码率进行编码,同时可以保证编码输出的码流的质量稳定。
以一种视频通话场景为例,基于本申请实施例提供的一种视频编码方法,编码器可以实时接收通话双方的视频码流,针对视频码流中不同复杂程度的视频内容与当前通话双方各自的当前网络状态,同时在保证编码质量稳定的情况下,分配不同的码率对不同的视频帧进行编码,还可以实时监测当前视频画面质量,若出现噪声太大导致视频质量下降等情况,可以对编码器分配给各视频帧的码率进行进一步调控,提升编码质量,使通话双方的视频画面质量在一定水准下稳定。
本申请实施例提供的一种视频编码方法可以由计算机设备执行。计算机设备可以是服务器、客户端或者任意终端设备等等,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。
请参见图1,图1是本申请实施例提供的一种视频编码方法流程图,如图1所示。
S101、在获取到目标码流中的目标帧时,确定该目标帧的码率下限值。
其中,该目标帧在该码率下限值下的画面质量达到预设质量阈值,因此可以保证在将更多的码率向内容复杂的视频片段包含的视频帧倾斜时,该码率下限值可以使内容简单的视频片段包含视频帧保持画面质量达到预设质量阈值。
进一步的,内容复杂的视频片段,可以是该视频片段的画面变化剧烈,比如该视频片段包含的视频帧中的相邻帧变化剧烈,示例性的,如包含海浪运动的内容的视频片段,该视频片段中的海浪起伏运动,导致该视频片段包含的视频帧中的相同的像素点在该各个视频帧中的位置都不同,每个像素点都在不断变化;也可以是该视频片段的画面包含许多细节和纹理等,如建筑物、纺织品或微观摄影等内容,该视频片段的画面需要更高的码率保留画面的细节,避免图像失真;也可以是该视频片段的画面包含丰富的颜色等,如包含户外场景或者颜色丰富的艺术品等,示例性的,如包含烟火内容的视频片段,烟火涉及多种颜色,同时还可能涉及明暗变化,因此需要更多的码率保持色彩的准确性和饱和度以及避免明暗变化导致过曝等问题。
在一种实现方式中,该目标帧的码率下限值可以通过获取该目标帧的前N帧的画面质量表征参数,若该前N帧中的至少一帧的画面质量表征参数超出预设画面质量表征参数范围,则确定该目标帧的画面质量表征参数,N为正整数,该目标帧的画面质量表征参数位于该预设画面质量表征参数范围内,基于该目标帧的画面质量表征参数,确定该目标帧的码率下限值。其中,该画面质量表征参数可以是量化参数,也可以是分辨率参数。当该画面质量表征参数是量化参数时,该目标帧的码率下限值和该目标帧的画面质量表征参数呈负相关趋势,即该目标帧的画面质量表征参数越大,该目标帧的码率下限值越小;当该画面质量表征参数是分辨率参数时,该目标帧的码率下限值和该目标帧的画面质量表征参数呈正相关趋势,即该目标帧的画面质量表征参数越大,该目标帧的码率下限值越大。该预设画面质量表征参数范围可以通过前期测试或者一般经验确定,画面质量表征参数超出预设画面质量表征参数范围可以理解为该画面质量表征参数大于该预设画面质量表征参数范围的最大值,或者该画面质量表征参数小于该预设画面质量表征参数范围的最大值。示例性,若该画面质量表征参数为量化参数,在一种直播场景中,可以获取目标帧前一帧的量化参数,若该量化参数超出预设量化参数范围,则对该目标帧的量化参数进行修正,使该目标帧的量化参数位于该预设量化参数范围内。
可选的,还可以若该前N帧中的至少一帧的画面质量表征参数超出预设画面质量表征参数范围,则确定该目标帧和该目标帧的后X帧的画面质量表征参数,该目标帧和该目标帧的后X帧的画面质量表征参数位于该预设画面质量表征参数范围内,基于该目标帧和该目标帧的后X帧的画面质量表征参数,确定该目标帧和该目标帧的后X帧的各个码率下限值。
进一步的,不同视频内容的视频片段可以对应不同的预设画面质量参数范围,如视频内容复杂的视频片段可以对应的预设画面质量参数的范围的最小值可以比视频内容简单的视频片段对应的预设画面质量参数的范围的最小值更小,同时该视频内容复杂的视频片段可以对应的预设画面质量参数的范围的最大值可以比视频内容简单的视频片段对应的预设画面质量参数的范围的最大值更小,由于一段码流中可以包含多个不同视频内容的视频片段,因此可以对不同视频内容的视频片段中包含的视频帧确定画面质量表征参数,该画面质量表征参数位于该包含该视频帧的视频片段对应的预设画面质量参数范围中。具体的,以一种直播场景为例,若接收的码流中包含一个复杂的视频片段1和一个简单的视频片段2,该视频片段1对应的预设画面质量参数范围为范围1,该视频片段2对应的预设画面质量参数范围为范围2,其中,范围1和范围2没有重合,当目标帧的前一帧为视频片段1的最后一帧,该目标帧为该视频片段2的第一帧,该目标帧的前一帧的画面质量参数超出范围2,因此在范围2中确定该目标帧的画面质量参数。
S102、将用于播放该目标码流的计算机设备的当前网络带宽与预设码率上限值进行比较,得到比较结果。
其中,用于播放该目标码流的计算机设备的当前网络带宽可以通过发送特定的测试数据包并测量其传输时间来估算得到,可以由带宽测量工具如iperf、speedtest等进行测量。
S103、基于该比较结果,对该预设码率上限值进行调整,得到该目标帧的码率上限值。
在一种实现方式中,若该比较结果指示该当前网络带宽小于该预设码率上限值,则对该预设码率上限值进行降低调整,得到该目标帧的码率上限值,该目标帧的码率上限值大于该目标帧的码率下限值,且小于等于该当前网络带宽。
在一种实现方式中,若该比较结果指示该当前网络带宽大于等于该预设码率上限值,则将该预设码率上限值确定为该目标帧的码率上限值。
其中,该预设码率上限可以由一般经验得到,或者也可以由一般经验与预期节省的数值计算得到,示例性的,若在直播场景中,一般经验的最大码率数值为x,预期优化30%,则该预设码率上限可以为x(1-30%)。
在该实施方式中,根据当前网络带宽对该预设码率上限值进行调整,使编码器的码率输出符合当前网络带宽调控。
S104、基于该目标帧的码率上限值和该目标帧的码率下限值,确定该目标帧的码率,该目标帧的码率大于等于该目标帧的码率下限值,且小于等于该目标帧的码率上限值。
基于该目标帧的码率上限值和该目标帧的码率下限值,确定该目标帧的码率,其中,该目标帧的码率下限值可以保证该目标帧的质量下限,该目标帧的码率上限受当前网络带宽调控,可以理解的,视频内容简单的目标帧的码率小于该视频内容简单的目标码率上限值,同时该视频内容简单的目标帧的码率大于等于该视频内容简单的目标帧的码率下限值,而视频内容复杂的目标帧的码率大于该视频内容复杂的目标帧的码率下限值,同时该视频内容复杂的目标帧的码率小于等于该视频内容复杂的目标帧的码率上限值,即可以实现对视频内容简单的视频帧分配更少的码率,对视频内容复杂的视频帧分配更多的码率,提高码率的利用率,使编码器的码率可以基于视频内容进行分配。
进一步的,由于该目标帧的码率在该大于等于该目标帧的码率下限值,小于等于该目标帧的码率上限值的码率范围内确定,因此不同的视频帧的码率波动可能会导致编码后的不同视频帧的视频质量也会在一定范围内波动,因此可以针对保证编码质量稳定的方向对该目标帧的码率分配进一步优化,具体可以参见图2的描述。
S105、基于该目标帧的码率,对该目标帧进行编码,得到编码后的目标帧。
可见,本申请实施例中,获取目标码流中的目标帧后,确定目标帧的码率下限值,且将用于播放该目标码流的计算机设备的当前网络带宽与预设码率上限值进行比较,得到比较结果,基于该比较结果,对该预设码率上限值进行调整,得到该目标帧的码率上限值,基于该目标帧的码率上限值和该目标帧的码率下限值,确定该目标帧的码率,使该目标帧的码率大于等于该目标帧的码率下限值,且小于等于该目标帧的码率上限值,由于该目标帧的码率大于等于该目标帧的码率下限值,因此无论该目标帧的画面内容复杂或简单都可以保证质量下限,且由于该目标帧的码率小于等于该目标帧的码率上限值,该目标帧的码率上限受当前网络带宽调控。因此基于该目标帧的码率,对该目标帧进行编码,得到的编码后的目标帧符合当前带宽状况。
进一步的,视频内容简单的目标帧可以在大于等于该视频内容简单的目标帧的码率下限值,而小于该视频内容简单的目标帧的码率上限值的范围内确定该视频内容简单的目标帧的码率;视频内容复杂的目标帧可以在大于该视频内容复杂的目标帧的码率下限值,而小于等于该视频内容复杂的目标帧的码率上限值的范围内确定该视频内容复杂的目标帧的码率,实现了基于视频内容进行多层码率控制,且响应带宽的调整,节省资源成本。
进一步的,在一种实现方式中,请参见图2,图2是本申请实施例提供的一种视频编码质量稳定的方法流程图,如图所示。
S201、获取目标帧的编码质量系数。
其中,由于使用 CRF 进行视频编码时,编码器会自动调整码率以尽量满足目标CRF 值。即在相同的 CRF 值下,具有更复杂内容的视频可能会产生较高的码率,而较简单的内容则可能会产生较低的码率。
因此,基于该CRF的特性,可以根据测试或者一般经验得到该CRF的值,基于该目标帧在该CRF的值时对应的参考码率,在大于等于该目标帧的码率下限值,小于等于该目标帧的码率上限值的码率范围内确定最接近该参考码率的该目标帧的码率。
在一种实现方式中,该CRF值也可以通过当前编码输出的视频帧的质量进行实时调整得到,具体的,请参见图3,图3是本申请实施例提供的一种获取目标帧的编码质量系数的流程图,如图3所示。
S301、获取该目标帧的前M帧的峰值信噪比。
其中,M为正整数。
S302、若获取到的任一个峰值信噪比小于预设比例阈值,则对该目标帧的上一帧的编码质量系数进行调整,得到该目标帧的编码质量系数,该目标帧的编码质量系数小于该上一帧的编码质量系数。
该预设比例阈值可以通过预期的视频质量对应的PSNR值得到。若该目标帧的前M帧中的任一帧的PSNR值小于该预设比例阈值,则在该目标帧的上一帧的CRF值的基础上进行调整,即将该目标帧的上一帧的CRF值调低,得到该目标帧的CRF值;若该目标帧的前M帧中的任一帧的PSNR值不小于该预设比例阈值,则将该目标帧的上一帧的CRF值作为该目标帧的CRF值。其中,将该目标帧的上一帧的CRF值调低的步长,可以是1或者2或者3等任意正整数,由于该CRF值一般的取值范围在0到51之间,因此该调低的步长也可以是小于等于51的正整数。
具体的,以一种直播场景为例,主播端的视频内容可能会包含晚上关灯后的场景等内容,导致采集到的视频码流可能会产生大量随机噪声,从而影响编码质量使编码输出的视频帧1的PSNR值小于预设比例阈值,则将该输出的视频帧1的CRF值1调低一个单位步长,得到一个新的CRF值2,将该新的CRF值2作为该输出的视频帧的下一帧的CRF值,即将该新的CRF值2作为视频帧2的CRF值,若在该CRF值2的情况下,该视频帧2编码输出后的PSNR值也小于预设比例阈值,则将该CRF值2调低一个单位步长,得到CRF值3,将该CRF值3作为该视频帧2的下一帧的CRF值,即将该CRF值3作为视频帧3的CRF值,继续上述编码操作。
S202、调用编码器对该目标帧进行图像内容进行分析,得到该编码质量系数对应的参考量化参数。
S203、基于该参考量化参数,确定该编码质量系数对应的参考码率。
S204、基于该目标帧的码率上限值,该目标帧的码率下限值和该参考码率,确定该目标帧的码率,该目标帧的码率大于等于该目标帧的码率下限值,小于等于该目标帧的码率上限值,且该目标帧的码率与该参考码率的差值小于目标码率与该参考码率的差值,该目标码率为大于等于该目标帧的码率下限值且小于等于该目标帧的码率上限值的除该目标帧的码率以外的任一码率。
进一步的,在另一种实现方式中,由于CRF可以通过调整量化参数来实现质量控制,即编码器可以根据该CRF值自动选择适当的量化参数以达到该CRF值指示的质量水平,因此可以参见图4,图4是本申请实施例提供另一种视频编码质量稳定的方法流程图,如图所示。
S401、获取该目标帧的编码质量系数。
S402、调用编码器对该目标帧进行图像内容进行分析,得到该编码质量系数对应的参考量化参数。
S403、基于该目标帧的码率上限值确定该码率上限值对应的量化参数上限值,并基于该目标帧的码率下限值确定该码率下限值对应的量化参数下限值。
S404、基于该量化参数上限值,该量化参数下限值和该参考量化参数,确定该目标帧的优化量化参数。
其中,该目标帧的优化量化参数大于等于该量化参数下限值,小于等于该量化参数上限值,且该优化量化参数与该参考量化参数的差值小于目标量化参数与所述参考量化参数的差值,该目标量化参数为大于等于该量化参数下限值且小于等于该量化参数上限值的除该优化量化参数以外的任一量化参数。
S405、基于该优化量化参数,确定该目标帧的码率。
在该实施方式中,目标帧的码率可以根据该目标帧的CRF值在大于等于该目标帧的码率下限值,小于等于该目标帧的码率上限值的码率范围内确定,使该目标帧由该确定的该目标帧的码率进行编码后的图像质量最符合该目标帧的CRF值所指示的图像质量,实现了基于视频内容进行码率分配,提升码率利用率的同时,保证输出的视频画面质量稳定。
为了更好的理解本申请实施例,以一种直播场景为例,请参见图5,图5是本申请实施例提供的一种直播视频编码器的码率控制流程图,如图5所示。
S501、获取目标帧前一帧的量化参数。
S502、判断该量化参数是否在预设范围。
S503、若该量化参数不在预设范围内,在该预设范围内,确定该目标帧的量化参数。
若目标帧的前一帧的量化参数不在预设范围内,则修正该目标帧的量化参数,即在该预设范围内,确定该目标帧的量化参数。
S504、基于该量化参数,确定该目标帧的码率下限值。
若该目标帧的前一帧的量化参数或者修正后的该目标帧的量化参数在预设范围内,基于该量化参数,确定该目标帧的码率下限值,以使该目标帧的码率大于等于该目标帧的码率下限值,从而保证不管该目标帧的视频内容简单或者复杂,基于该目标帧的码率对该目标帧进行编码,可以保证该目标帧的编码质量下限。
S505、业务带宽测试得到可用带宽。
S506、判断该可用带宽是否大于等于该目标帧的预设码率上限值。
S507、若该可用带宽小于该目标帧的预设码率上限值,调整该预设码率上限值,得到该目标帧的码率上限值。
基于业务带宽测试得到的可用带宽对该预设码率上限值进行调整,以使该目标帧的码率上限值小于等于该可用带宽,从而该目标帧的码率小于等于该目标帧的码率上限值,从而保证基于该目标帧的码率对该目标帧进行编码输出与该可用带宽匹配,符合当前网络状态。
S508、获取编码质量系数CRF,得到该编码质量系数对应的参考码率。
若该可用带宽大于等于该目标帧的预设码率上限值或者该可用带宽大于等于该调整后得到的目标帧的码率上限值,则可以获取编码质量系数CRF,该编码质量系数的值可以受当前编码器输出帧的峰值信噪比PSNR值调控,具体的,可以设置一个PSNR客观质量的监测程序,检测当前编码器输出帧的PSNR值,即若检测该目标帧的前一帧的PSNR值低于预设阈值,则将该CRF值降低一个单位步长,得到该目标帧的CRF值,得到该CRF值对应的参考码率。
S509、基于该目标帧的码率上限值,该目标帧的码率下限值和该参考码率,确定该目标帧的码率。
基于该目标帧的码率上限值,该目标帧的码率下限值和该参考码率,确定该目标帧的码率,使该目标帧不管视频内容简单或者复杂,该目标帧的编码质量均满足该目标帧的码率下限值指示的质量下限,且该目标帧的编码受当前可用带宽的调控,该目标帧的CRF值得到参考码率,且在该目标帧的码率上限值和该目标帧的码率下限值的码率范围内,确定与该参考码率最接近的该目标帧的码率,因此基于该目标帧的码率进行编码输出的目标帧的质量均满足该CRF值指示的质量,使得该编码器的输出质量稳定。
下面对该直播场景下如何进行码率控制进行具体介绍。请参见图6,图6是本申请实施例提供的一种直播视频编码器的码率控制方法应用时序图。
S601、主播客户端向服务器发送开播请求。
该请求可以携带该主播客户端对应的主播的账号标识及身份信息等数据。
S602、服务器创建直播间。
服务器可以基于接收到的请求创建该主播对应的直播间。
S603、主播客户端采集实时视频流。
主播客户端对应的终端设备可以通过调用摄像头采集主播当前的实时视频流,同时将该视频流发送至服务器。
S604、主播客户端向服务器发送实时视频流。
S605、服务器对该实时视频流中的目标帧进行预处理。
服务器可以对接收到的视频流进行预处理,包括缓存一定帧进行预分析、决定帧类型等相关操作。
S606、服务器对该预处理后的目标帧进行码率控制。
服务器可以基于本申请实施例提供的方法,对该视频流中的任一帧进行如下操作:
获取该视频码流中目标帧前一帧的量化参数,判断该量化参数是否在预设范围,从而确定该目标帧的码率下限值,同时可以进行业务带宽测试得到可用带宽。判断该可用带宽是否大于等于该目标帧的预设码率上限值,若该可用带宽小于该目标帧的预设码率上限值,则调整该预设码率上限值,得到该目标帧的码率上限值,若该可用带宽大于等于该目标帧的预设码率上限值,则将该预设码率上限值确定为该目标帧的码率上限值,获取编码质量系数CRF,得到该编码质量系数对应的参考码率。基于该目标帧的码率上限值,该目标帧的码率下限值和该参考码率,确定该目标帧的码率,按照该确定的码率对该目标帧进行编码,实现对视频帧的码率控制。
S607、服务器对该目标帧进行收包组帧。
服务器可以对该视频流中的每一帧,按照每一帧确定的码率进行编码,然后可以向编码完成的目标帧添加控制信息如头部和校验码等信息完成收包组帧。
S608、服务器向主播客户端发送编码处理后的视频数据。
将编码处理后的视频数据传输到主播客户端对应的终端设备中,同时通过PSNR客观质量的监测程序,可以检测当前编码器输出帧的PSNR值,即若检测该输出帧的PSNR值低于预设阈值,则可以反向调控当前输出帧的下一帧的CRF值,可以将当前输出帧的下一帧的CRF值降低一个单位步长,然后继续按照上述步骤进行编码。
S609、主播客户端对该编码处理后的视频数据进行后处理,还原为视频流。
主播客户端接收到服务器传输的包数据或者帧数据后可以经过后处理模块,即将接收到的包或者帧进行解包和解帧操作,将数据还原为视频流。
S610、主播客户端对该还原得到的视频流进行解码,得到解码后的视频。
将还原得到的视频流由视频解码模块进行解码。
S611、主播客户端将该解码后的视频渲染。
将解码后的视频画面渲染在该主播客户端对应的终端设备屏幕中。
S612、主播客户端在该直播间中显示该视频。
观众客户端与主播客户端相似,执行下述步骤。
S613、服务器向观众客户端发送编码处理后的视频数据。
将编码处理后的视频数据传输到观众客户端对应的终端设备中,同时通过PSNR客观质量的监测程序,可以检测当前编码器输出帧的PSNR值,即若检测该输出帧的PSNR值低于预设阈值,则可以反向调控当前输出帧的下一帧的CRF值,可以将当前输出帧的下一帧的CRF值降低一个单位步长,然后继续按照上述步骤进行编码。
S614、观众客户端对该编码处理后的视频数据进行后处理,还原为视频流。
观众客户端接收到服务器传输的包数据或者帧数据后可以经过后处理模块,即将接收到的包或者帧进行解包和解帧操作,将数据还原为视频流。
S615、观众客户端对该还原得到的视频流进行解码,得到解码后的视频。
将还原得到的视频流由视频解码模块进行解码。
S616、观众客户端将该解码后的视频渲染。
将解码后的视频画面渲染在该观众客户端对应的终端设备屏幕中。
S617、观众客户端在该直播间中显示该视频。
基于相关实施例的描述,本申请实施例还提供了一种视频编码装置,该视频编码装置可以执行图1到图6所示的操作。请参见图7所示,图7是本申请实施例提供的一种视频编码装置的示意图。如图7所示,该视频编码装置可包括但不限于确定单元701、比较单元702、调整单元703以及编码单元704。
确定单元701,用于在获取到目标码流中的目标帧时,确定所述目标帧的码率下限值,所述目标帧在所述码率下限值下的画面质量达到预设质量阈值;
比较单元702,用于将用于播放所述目标码流的计算机设备的当前网络带宽与预设码率上限值进行比较,得到比较结果;
调整单元703,用于基于所述比较结果,对所述预设码率上限值进行调整,得到所述目标帧的码率上限值;
所述确定单元701,还用于基于所述目标帧的码率上限值和所述目标帧的码率下限值,确定所述目标帧的码率,所述目标帧的码率大于等于所述目标帧的码率下限值,且小于等于所述目标帧的码率上限值;
编码单元704,用于基于所述目标帧的码率,对所述目标帧进行编码,得到编码后的目标帧。
在一种实施方式中,调整单元703基于所述比较结果,对所述预设码率上限值进行调整,得到所述目标帧的码率上限值,包括:
若所述比较结果指示所述当前网络带宽小于所述预设码率上限值,则对所述预设码率上限值进行降低调整,得到所述目标帧的码率上限值,所述目标帧的码率上限值大于所述目标帧的码率下限值,且小于等于所述当前网络带宽。
在一种实施方式中,调整单元703基于所述比较结果,对所述预设码率上限值进行调整,得到所述目标帧的码率上限值,包括:
若所述比较结果指示所述当前网络带宽大于等于所述预设码率上限值,则将所述预设码率上限值确定为所述目标帧的码率上限值。
在一种实施方式中,确定单元701确定所述目标帧的码率下限值,包括:
获取所述目标帧的前N帧的画面质量表征参数;
若所述前N帧中的至少一帧的画面质量表征参数超出预设画面质量表征参数范围,则确定所述目标帧的画面质量表征参数,所述目标帧的画面质量表征参数位于所述预设画面质量表征参数范围内;
基于所述目标帧的画面质量表征参数,确定所述目标帧的码率下限值。
在一种实施方式中,所述确定单元701基于所述目标帧的码率上限值和所述目标帧的码率下限值,确定所述目标帧的码率,包括:
获取所述目标帧的编码质量系数;
调用编码器对所述目标帧进行图像内容进行分析,得到所述编码质量系数对应的参考量化参数;
基于所述参考量化参数,确定所述编码质量系数对应的参考码率;
基于所述目标帧的码率上限值,所述目标帧的码率下限值和所述参考码率,确定所述目标帧的码率,所述目标帧的码率大于等于所述目标帧的码率下限值,小于等于所述目标帧的码率上限值,且所述目标帧的码率与所述参考码率的差值小于目标码率与所述参考码率的差值,所述目标码率为大于等于所述目标帧的码率下限值且小于等于所述目标帧的码率上限值的除所述目标帧的码率以外的任一码率。
在一种实施方式中,所述确定单元701基于所述目标帧的码率上限值和所述目标帧的码率下限值,确定所述目标帧的码率,包括:
获取所述目标帧的编码质量系数;
调用编码器对所述目标帧进行图像内容进行分析,得到所述编码质量系数对应的参考量化参数;
基于所述目标帧的码率上限值确定所述码率上限值对应的量化参数上限值,并基于所述目标帧的码率下限值确定所述码率下限值对应的量化参数下限值;
基于所述量化参数上限值,所述量化参数下限值和所述参考量化参数,确定所述目标帧的优化量化参数,所述目标帧的优化量化参数大于等于所述量化参数下限值,小于等于所述量化参数上限值,且所述优化量化参数与所述参考量化参数的差值小于目标量化参数与所述参考量化参数的差值,所述目标量化参数为大于等于所述量化参数下限值且小于等于所述量化参数上限值的除所述优化量化参数以外的任一量化参数。
基于所述优化量化参数,确定所述目标帧的码率。
在一种实施方式中,该视频编码装置还包括获取单元705;
所述获取单元705获取所述目标帧的编码质量系数,包括:
获取所述目标帧的前M帧的峰值信噪比;
若获取到的任一个峰值信噪比小于预设比例阈值,则对所述目标帧的上一帧的编码质量系数进行调整,得到所述目标帧的编码质量系数,所述目标帧的编码质量系数小于所述上一帧的编码质量系数。
本申请实施例中,确定单元701获取目标码流中的目标帧后,确定目标帧的码率下限值,该目标帧在该码率下限值下的画面质量达到预设质量阈值,且比较单元702将用于播放该目标码流的计算机设备的当前网络带宽与预设码率上限值进行比较,得到比较结果,调整单元703基于该比较结果,对该预设码率上限值进行调整,得到该目标帧的码率上限值,所述确定单元701基于该目标帧的码率上限值和该目标帧的码率下限值,确定该目标帧的码率,使该目标帧的码率大于等于该目标帧的码率下限值,且小于等于该目标帧的码率上限值,由于该目标帧的码率大于等于该目标帧的码率下限值,因此无论该目标帧的画面内容复杂或简单都可以保证质量下限,且由于该目标帧的码率小于等于该目标帧的码率上限值,因此编码单元704基于该目标帧的码率,对该目标帧进行编码,得到的编码后的目标帧符合当前带宽状况。基于此,本申请实施例可以对画面内容复杂的视频帧在符合当前带宽状况的情况下分配更多的码率,而对画面内容简单的视频帧在保证画面质量下限的情况下分配更少的码率,实现了基于视频内容进行多层码率控制,且响应带宽的调整,节省资源成本。
本申请实施例还提供一种计算机设备,请参见图8,图8是本申请实施例提供的一种计算机设备的结构示意图。如图8所示,该计算机设备至少包括处理器801、存储器802和通信接口803可通过总线804或其他方式连接,本申请实施例以通过总线804连接为例。本申请实施例的处理器801可通过运行存储器802中存储的计算机程序,执行前述视频编码方法的操作,例如:
在通过通信接口803获取到目标码流中的目标帧时,确定所述目标帧的码率下限值,所述目标帧在所述码率下限值下的画面质量达到预设质量阈值;
将用于播放所述目标码流的计算机设备的当前网络带宽与预设码率上限值进行比较,得到比较结果;
基于所述比较结果,对所述预设码率上限值进行调整,得到所述目标帧的码率上限值;
基于所述目标帧的码率上限值和所述目标帧的码率下限值,确定所述目标帧的码率,所述目标帧的码率大于等于所述目标帧的码率下限值,且小于等于所述目标帧的码率上限值;
基于所述目标帧的码率,对所述目标帧进行编码,得到编码后的目标帧。
在一种实施方式中,该处理器801基于所述比较结果,对所述预设码率上限值进行调整,得到所述目标帧的码率上限值,可以执行以下操作:
若所述比较结果指示所述当前网络带宽小于所述预设码率上限值,则对所述预设码率上限值进行降低调整,得到所述目标帧的码率上限值,所述目标帧的码率上限值大于所述目标帧的码率下限值,且小于等于所述当前网络带宽。
在一种实施方式中,该处理器801基于所述比较结果,对所述预设码率上限值进行调整,得到所述目标帧的码率上限值,可以执行以下操作:
若所述比较结果指示所述当前网络带宽大于等于所述预设码率上限值,则将所述预设码率上限值确定为所述目标帧的码率上限值。
在一种实施方式中,该处理器801确定所述目标帧的码率下限值,可以执行以下操作:
获取所述目标帧的前N帧的画面质量表征参数;
若所述前N帧中的至少一帧的画面质量表征参数超出预设画面质量表征参数范围,则确定所述目标帧的画面质量表征参数,所述目标帧的画面质量表征参数位于所述预设画面质量表征参数范围内;
基于所述目标帧的画面质量表征参数,确定所述目标帧的码率下限值。
在一种实施方式中,该处理器801基于所述目标帧的码率上限值和所述目标帧的码率下限值,确定所述目标帧的码率,可以执行以下操作:
获取所述目标帧的编码质量系数;
调用编码器对所述目标帧进行图像内容进行分析,得到所述编码质量系数对应的参考量化参数;
基于所述参考量化参数,确定所述编码质量系数对应的参考码率;
基于所述目标帧的码率上限值,所述目标帧的码率下限值和所述参考码率,确定所述目标帧的码率,所述目标帧的码率大于等于所述目标帧的码率下限值,小于等于所述目标帧的码率上限值,且所述目标帧的码率与所述参考码率的差值小于目标码率与所述参考码率的差值,所述目标码率为大于等于所述目标帧的码率下限值且小于等于所述目标帧的码率上限值的除所述目标帧的码率以外的任一码率。
在一种实施方式中,该处理器801基于所述目标帧的码率上限值和所述目标帧的码率下限值,确定所述目标帧的码率,可以执行以下操作:
获取所述目标帧的编码质量系数;
调用所述编码器对所述目标帧进行图像内容进行分析,得到所述编码质量系数对应的参考量化参数;
基于所述目标帧的码率上限值确定所述码率上限值对应的量化参数上限值,并基于所述目标帧的码率下限值确定所述码率下限值对应的量化参数下限值;
基于所述量化参数上限值,所述量化参数下限值和所述参考量化参数,确定所述目标帧的优化量化参数,所述目标帧的优化量化参数大于等于所述量化参数下限值,小于等于所述量化参数上限值,且所述优化量化参数与所述参考量化参数的差值小于目标量化参数与所述参考量化参数的差值,所述目标量化参数为大于等于所述量化参数下限值且小于等于所述量化参数上限值的除所述优化量化参数以外的任一量化参数。
基于所述优化量化参数,确定所述目标帧的码率。
在一种实施方式中,该处理器801获取所述目标帧的编码质量系数,可以执行以下操作:
获取所述目标帧的前M帧的峰值信噪比;
若获取到的任一个峰值信噪比小于预设比例阈值,则对所述目标帧的上一帧的编码质量系数进行调整,得到所述目标帧的编码质量系数,所述目标帧的编码质量系数小于所述上一帧的编码质量系数。
本申请还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述任一方法实施例中的步骤。
本申请实施例还提供一种计算机程序产品,计算机程序产品包括计算机程序代码,当计算机程序代码在计算机上运行时,使得计算机执行上述任一方法实施例中的步骤。
本申请实施例还提供一种芯片,包括存储器和处理器,存储器用于存储计算机程序,处理器用于从存储器中调用并运行计算机程序,使得安装有芯片的设备执行上述任一方法实施例中的步骤。
本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
本申请实施例装置中的单元可以根据实际需要进行合并、划分和删减。
- 基于运维流程平台的应用系统数据库性能管控方法和系统
- 一种基于运维保障服务管理平台的运维流程管理系统