一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

视频编码方法、装置、设备及存储介质与流程

2021-10-29 07:53:00 来源:中国专利 TAG:
视频编码方法、装置、设备及存储介质与流程

本申请实施例涉及计算机技术领域,特别涉及一种视频编码方法、装置、设备及存储介质。

背景技术

随着移动互联网的发展,即时通讯技术已经渗透进人们日常生活和工作的方方面面。即时通讯技术与视频技术的结合更是诞生出了更加多样化的即时通讯场景,如视频通话、远程会议、在线直播、网络教育等等。

通常,这类与视频相结合的即时通讯场景极度依赖网络质量。在视频编码时,编码器必须基于网络质量实时调控视频编码策略,以使得视频编码的消耗码率符合网络带宽,这样才能避免因为网络质量较差而导致的播放卡顿、播放失败等问题。目前,视频编码策略的调控主要分为两类:编码器内部码率调控以及编码器外部帧率/分辨率调控。编码器内部码率调控是指在固定帧率/分辨率的场景下,进行一定范围内的码率调节;而当网络质量波动较大时,通常进行编码器外部帧率/分辨率调控,以平稳视频编码的消耗码率。

其中,相比于帧率调控,分辨率调控更加温和,应用场景也更为广泛。然而,在网络质量波动过于频繁时,分辨率的切换也会过于频繁,从而会产生明显的呼吸效应,影响用户的视频观看和通话体验。



技术实现要素:

本申请实施例提供了一种视频编码方法、装置、设备及存储介质,可用于避免分辨率的频繁切换,有助于降低由于网络质量频繁波动所产生的呼吸效应,提升用户的视频观看和通话体验。所述技术方案如下:

一方面,本申请实施例提供了一种视频编码方法,所述方法包括:

获取当前网络条件对应的码率变化信息,所述码率变化信息用于指示所述当前网络条件相对于历史网络条件的波动;

获取当前视频内容对应的参数变化信息,所述参数变化信息用于指示所述当前视频内容的内容复杂程度;

基于所述码率变化信息和所述参数变化信息,确定目标分辨率;

采用所述目标分辨率对所述当前视频帧进行编码。

另一方面,本申请实施例提供了一种视频编码装置,所述装置包括:

码率信息获取模块,用于获取当前网络条件对应的码率变化信息,所述码率变化信息用于指示所述当前网络条件相对于历史网络条件的波动;

参数信息获取模块,用于获取当前视频内容对应的参数变化信息,所述参数变化信息用于指示所述当前视频内容的内容复杂程度;

分辨率确定模块,用于基于所述码率变化信息和所述参数变化信息,确定目标分辨率;

视频编码模块,用于采用所述目标分辨率对所述当前视频帧进行编码。

再一方面,本申请实施例提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有计算机程序,所述计算机程序由所述处理器加载并执行以实现如上述视频编码方法。

又一方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述视频编码方法。

还一方面,本申请实施例提供了一种计算机程序产品,当所述计算机程序产品在计算机设备上运行时,使得计算机设备执行如上述视频编码方法。

本申请实施例提供的技术方案可以带来如下有益效果:

通过在视频编码过程中,结合网络质量的波动和视频内容的复杂程度,确定对当前视频帧编码时采用的分辨率,实现了更加准确地进行分辨率的调控。由于人眼会对简单场景下的画面质量变化更加敏感,本申请在调控分辨率时结合了视频内容的复杂程度,考虑了人眼针对视频内容的不同内容复杂程度的敏感情况,从而使得分辨率的调控更加准确和全面。并且,本申请在调控分辨率时同时考虑了网络质量的波动和视频内容的复杂程度,在网络质量波动过于频繁时,有效避免了分辨率的频繁切换,有助于降低由于网络质量频繁波动所产生的呼吸效应,提升用户的视频观看和通话体验。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请一个实施例提供的即时通讯场景的示意图;

图2是本申请一个实施例提供的视频编码方法的流程图;

图3是本申请一个实施例提供的关键块匹配的示意图;

图4是本申请另一个实施例提供的视频编码方法的流程图;

图5是本申请一个实施例提供的视频编码装置的框图;

图6是本申请另一个实施例提供的视频编码装置的框图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

由上述背景技术的介绍说明可知,编码器内部码率调控适用于固定帧率/分辨率的场景,当网络质量波动较大时,通常进行的是编码器外部帧率/分辨率调控。下面,针对帧率调控和分辨率调控分别进行介绍说明。

帧率调控:客户端自动维护一个帧级的码率统计队列,用于缓存近期的已编码帧的实际消耗码率,进而计算出已编码帧的帧级平均消耗码率,在当前帧进入编码器之前,通过将已编码帧的帧级平均消耗码率与利用实际带宽估计得到的目标帧级码率进行比较,判断当前帧是否仍有充足码率进行编码,若剩余码率不足,则直接丢弃当前帧,等待下一采集帧的到来。

在一个示例中,已编码帧的帧级平均消耗码率计算公式如下:

则当前帧是否需要丢弃根据如下计算公式确定:

其中,Rav为已编码帧的帧级平均消耗码率,Rk为第k帧的实际消耗码率,n为当前帧的序号;TargteBits为目标帧级码率;FPS为设定帧率;α为阈值系数;若丢弃标志位为1,则表示当前帧需要丢弃,若丢弃标志位为0,则表示当前帧不需要丢弃。基于上述公式可知,当已编码帧的帧级平均消耗码率与目标帧级码率之间的比值低于一定阈值时,需要丢弃当前帧来确保码率的平稳。

分辨率调控:即码表方案。针对不同分辨率的视频,从小到大依次设置各种码率进行编解码,得到重建视频,并计算出各种码率下的PSNR(Peak Signal to Noise Ratio,峰值信噪比),PSNR值越大,代表视频质量越好。通过大量的实验数据,可得到某一分辨率最适宜的码率范围,例如,270P(标清)的视频在码率为320kbps(千比特每秒)至500kbps时视频质量最好。将各种分辨率适宜的码率范围进行整合,即可形成码表方案。

在一个示例中,码表方案如下所示:

其中,level表示不同的分辨率级别,如180P(流畅)、270P(标清)、360P(高清);levelmr是指默认的分辨率级别,如默认的分辨率为270P;uplevel和domnlevel分别代表levermr最适宜的码率范围上界和下界,当目标帧级码率越界时,即需要按照上述码表方案切换分辨率。示例性地,假设上述levelmr为270P,levelmr-1为180P,domnlevel为350kps,则当TargteBits由400kps波动到300kbps时,分辨率就需要从270P切换为180P。

从上述介绍可见,帧率调控更加侧重保证视频质量,主要以牺牲视频的流畅度为代价,来获得码率的平稳性,但是,此类调控会使得视频产生明显的卡顿,严重时甚至卡死,对用户的主观体验很不友好。换句话说,帧率调控的调控力度过大,适合极端情况。分辨率调控则更加侧重保证视频的流畅度,基于网络质量实时地调整视频的分辨率,达到平衡视频码率的效果。与帧率调控相比,分辨率调控方法相对比较温和,对用户的主观体验更加友好,应用场景也相对更加广泛。

然而,采用分辨率调控的情况下,在网络质量波动过于频繁时,分辨率的切换也会过于频繁,从而会产生明显的呼吸效应。另外,人眼会对简单场景下的画面质量变化更加敏感,此时,分辨率调控需要更加小心,避免由于分辨率调控力度过大导致视频的画面质量急剧下降或急剧上升,影响用户的观看和通话体验。

基于此,本申请实施例提供了一种视频编码方法,可以更加高效灵活地确定视频编码过程中对当前视频帧进行编码时所采用的分辨率。下面,将结合几个实施例对本申请提供的技术方案进行介绍说明。

需要说明的一点是,以下实施例中所述的“即时通讯”是指与视频相结合的即时通讯,如视频通话、远程会议、在线直播、网络教育等等。本申请实施例对“即时通讯”的开展方式不作限定,用户可以通过具备即时通讯功能的应用程序、网页、小程序等开展即时通讯。可选地,具备即时通讯功能的应用程序包括即时通讯应用程序、视频播放应用程序、直播应用程序、游戏应用程序、教育应用程序等,本申请实施例对此不作限定。

还需要说明的一点是,本申请实施例中仅是为了便于说明视频编码和视频解码的过程,而在即时通讯场景下对视频编码和视频解码进行了介绍,但这并不构成对本申请技术方案的限定。实际应用中,本申请实施例提供的视频编码方法也可以应用于非即时通讯场景中,例如,用户将拍摄的视频分享至个人社交平台、网页等场景中,这些均应属于本申请的保护范围之内。

请参考图1,其示出了本申请一个实施例提供的即时通讯场景的示意图。如图1所示,该即时通讯场景包括:视频编码端110、视频解码端120。

视频编码端110是指即时通讯场景中视频内容的生成端,用于生成视频内容、对生成的视频内容进行编码、将编码完的视频内容发送至视频解码端120等。视频解码端120是指即时通讯场景中视频内容的接收端,用于对接收到的视频内容进行解码、对解码完的视频内容进行播放等。可选地,视频编码端110和视频解码端120之间通过网络互相通信。在一个示例中,视频编码端110和视频解码端120之间可以直接通信,也可以通过服务器(图1中未示出)间接通信,例如,视频编码端110将编码完的视频内容发送至服务器,再由服务器将编码完的视频内容发送至视频解码端120。

本申请实施例对视频编码端110和/或视频解码端120的设备类型不作限定,在一个示例中,视频编码端110和/或视频解码端120为以下任意一个设备:计算机设备、终端设备、服务器、可穿戴设备、蓝牙设备、车载设备等。在一个示例中,视频编码端110和视频解码端120为相同的设备类型,或者,为不同的设备类型。当然,在实际的即时通讯场景中,视频编码端110和视频解码端120可以实现为同一个设备,即该设备既具备视频编码端110的功能,也具备视频解码端120的功能。图1仅以视频编码端110和视频解码端120为不同的设备进行举例说明,但这并不构成对本申请技术方案的限定。

需要说明的一点是,本申请实施例中仅是为了便于说明视频编码和视频解码的过程,而区分了视频编码端110和视频解码端120,但这并不构成对本申请技术方案的限定。在实际的即时通讯场景中,视频编码端110既可以对视频内容进行编码并发送出去,也可以接收视频内容并对其进行解码;视频解码端120既可以接收视频内容并对其解码,也可以对视频内容进行编码并发送出去。换句话说,在实际的即时通讯场景中,即时通讯的各方均可以执行产生并编码视频内容、解码并播放他方产生的视频内容等步骤。

请参考图2,其示出了本申请一个实施例提供的视频编码方法的流程图。该方法可以应用于图1所示即时通讯场景的视频编码端110中。如图2所示,该方法包括如下几个步骤(210~240)。

步骤210,获取当前网络条件对应的码率变化信息,码率变化信息用于指示当前网络条件相对于历史网络条件的波动。

网络质量对视频编码过程中所采用的码率和分辨率等有着重要的影响,为了实现较好的视频编码效果、确保视频播放的清晰度和流畅度等,需要考虑网络质量对视频编码所采用的参数带来的影响。由上述内容可知,在网络质量波动较大时,超过了码率调控范围,则需要进行帧率和/或分辨率的调控。而在本申请实施例中,由于帧率调控力度过大,仅适用于极端情况,所以在网络质量波动较大的情况下,采用更为温和的分辨率调控方式。

因此,为了确定是否需要进行分辨率的调控,或者说,为了确定视频编码过程中对当前视频帧所采用的目标分辨率,则需要确定网络质量波动情况,即当前网络条件相对于历史网络条件的波动。由于网络质量通常由网络带宽反映,而码率与网络带宽通常也相关联,因此,本申请实施例中通过码率变化信息来指示当前网络条件相对于历史网络条件的波动。其中,历史网络条件可以是从当前时刻之前的某一时刻至当前时刻之间的网络质量,也可以是对视频内容进行编码的起始时刻至当前时刻之间的网络质量。有关码率变化信息、当前网络条件、历史网络条件等其它介绍说明,请参见下述实施例,此处不多赘述。

步骤220,获取当前视频内容对应的参数变化信息,参数变化信息用于指示当前视频内容的内容复杂程度。

由于人眼会对简单场景下的画面质量变化更加敏感,所以在视频内容简单的情况下,分辨率调控需要更加小心,避免由于分辨率调控力度过大导致视频的画面质量急剧下降或急剧上升。相比于相关技术仅考虑网络质量对视频编码的影响,本申请实施例提供的视频编码方法,还考虑了人眼针对视频内容的不同内容复杂程度的敏感情况,从而避免视频的画面质量急剧变化。

因此,为了确定视频编码过程中对当前视频帧所采用的目标分辨率,还需要确定当前视频内容的内容复杂程度。通常,在码率较为平稳时,视频帧的纹理复杂度越高,编码后的实际量化参数(Quantization Parameter,QP)就越大,这两者之间呈现正相关的关系,因此,本申请实施例中通过量化参数的参数变化信息来指示当前视频内容的内容复杂程度。有关参数变化信息、内容复杂程度等其它介绍说明,请参见下述实施例,此处不多赘述。

步骤230,基于码率变化信息和参数变化信息,确定目标分辨率。

在获取到码率变化信息和参数变化信息之后,即基于这两方面的信息确定对当前视频帧进行编码时所采用的目标分辨率。在一个示例中,视频编码端基于这两方面的信息确定无需进行分辨率调控,则直接将当前视频帧的原始分辨率作为目标分辨率。在另一个示例中,视频编码端基于这两方面的信息确定需要进行分辨率调控,则增加或降低当前视频帧的原始分辨率以得到目标分辨率。有关目标分辨率的确定等其它介绍说明,请参见下述实施例,此处不多赘述。

步骤240,采用目标分辨率对当前视频帧进行编码。

视频编码端在确定了目标分辨率之后,即可采用目标分辨率对当前视频帧进行编码,以使得视频码率与网络带宽相匹配,避免视频播放卡顿或播放失败等问题。可选地,视频编码端采用目标分辨率对当前视频帧进行编码包括:视频编码端基于目标分辨率对当前视频帧进行缩放处理。

示例性地,在目标分辨率大于当前视频帧的原始分辨率的情况下,采用目标分辨率对当前视频帧进行编码包括:对当前视频帧进行上采样处理;在经过上采样处理后的当前视频帧的分辨率与目标分辨率匹配的情况下,采用目标分辨率对经过上采样处理后的当前视频帧进行编码。

示例性地,在目标分辨率小于当前视频帧的原始分辨率的情况下,采用目标分辨率对当前视频帧进行编码包括:对当前视频帧进行下采样处理;在经过下采样处理后的当前视频帧的分辨率与目标分辨率匹配的情况下,采用目标分辨率对经过下采样处理后的当前视频帧进行编码。

可选地,经过上采样处理后的当前视频帧(或经过下采样处理后的当前视频帧)的分辨率与目标分辨率匹配包括:经过上采样处理后的当前视频帧(或经过下采样处理后的当前视频帧)的分辨率等于目标分辨率,或者,经过上采样处理后的当前视频帧(或经过下采样处理后的当前视频帧)的分辨率与目标分辨率之间的差值小于设定的阈值。

综上所述,本申请实施例提供的技术方案,通过在视频编码过程中,结合网络质量的波动和视频内容的复杂程度,确定对当前视频帧编码时采用的分辨率,实现了更加准确地进行分辨率的调控。由于人眼会对简单场景下的画面质量变化更加敏感,本申请在调控分辨率时结合了视频内容的复杂程度,考虑了人眼针对视频内容的不同内容复杂程度的敏感情况,从而使得分辨率的调控更加准确和全面。并且,本申请在调控分辨率时同时考虑了网络质量的波动和视频内容的复杂程度,在网络质量波动过于频繁时,有效避免了分辨率的频繁切换,有助于降低由于网络质量频繁波动所产生的呼吸效应,提升用户的视频观看和通话体验。

下面,针对码率变化信息、参数变化信息和目标分辨率的确定过程的示例性实施方式进行介绍说明。

在一个示例中,上述步骤210包括如下几个步骤(212~216)。

步骤212,确定实时目标码率,实时目标码率用于指示当前网络条件。

为了使得视频编码端编码出的视频帧能够在当前网络条件下发送成功,则需要对当前网络条件进行估计,以得到可供视频编码端参考的编码码率,即用于指示当前网络条件的实时目标码率。可选地,视频编码端采用带宽估计方法确定实时目标码率,该带宽估计方法包括但不限于:链路延时方法、包探测带宽估计方法等。

步骤214,获取历史平均码率,历史平均码率用于指示历史网络条件。

为了获得当前网络条件相对于历史网络条件的波动,视频编码端还需要确定用于指示历史网络条件的历史平均码率。可选地,历史平均码率是从视频编码的开始时刻至当前时刻之间的平均码率,例如,在本申请的技术方案应用于视频通话场景下,历史平均码率可以是视频通话开启的时刻至当前时刻之间的平均码率;或者,历史平均码率是当前时刻之前的一段时间内的平均码率,例如,历史平均码率为当前时刻之前的5秒内的平均码率。基于此,视频编码端需要维持一个码率缓存,该码率缓存内的均值即为历史平均码率,以用于指示历史网络条件。

步骤216,基于实时目标码率和历史平均码率,确定码率变化信息。

视频编码端在分别确定了实时目标码率和历史平均码率之后,即可比较实时目标码率和历史平均码率,以确定码率变化信息。在一个示例中,上述步骤216,包括:确定实时目标码率和历史平均码率之间的码率差值;基于码率差值确定码率变化信息。可选地,上述基于码率差值确定码率变化信息,包括:在码率差值的绝对值大于第一阈值,且码率差值为正数的情况下,确定码率变化信息包括码率发生剧烈变化,且码率骤增;在码率差值的绝对值大于第一阈值,且码率差值为负数的情况下,确定码率变化信息包括码率发生剧烈变化,且码率骤降;在码率差值的绝对值小于第一阈值的情况下,确定码率变化信息包括码率未发生剧烈变化。可选地,第一阈值为正数。

示例性地,实时目标码率为R,历史平均码率为Rav,Rav=avg(buffer_R),其中,buffer_R为视频编码端维持的码率缓存,avg(·)表示求均值函数;则实时目标码率和历史平均码率之间的码率差值为R-Rav。假设第一阈值为TH1,则码率变化信息有如下几种情况:

在|R-Rav|<Th1的情况下,码率变化信息包括码率未发生剧烈变化;

在R-Rav>Th1的情况下,码率变化信息包括码率发生剧烈变化,且码率骤增;

在Rav-R>Th1的情况下,码率变化信息包括码率发生剧烈变化,且码率骤减。

需要说明的一点是,针对|R-Rav|=Th1的情况下码率变化信息的内容,本申请实施例对此不作限定,实际应用中,既可以设定这种情况下码率变化信息包括码率未发生剧烈变化,也可以设定这种情况下码率变化信息发生剧烈变化,并依据R-Rav的正负设定码率骤增或码率骤减。应理解,这些均应属于本申请的保护范围之内。

在一个示例中,上述步骤220包括如下几个步骤(222~226)。

步骤222,获取第一量化参数值,第一量化参数值是指当前视频帧的前一视频帧的量化参数值。

通常,在当前视频内容相对于历史视频内容未发生场景变化的情况下,视频前后帧之间的差异很小,视频内容的内容复杂程度可认为是趋于一致的,因此,可以采用当前视频帧的前一视频帧的内容复杂程度代表当前视频帧的内容复杂程度。因此,本申请实施例中,视频编码端需要获取当前视频帧的前一视频帧的量化参数值,即第一量化参数值。

步骤224,获取第二量化参数值,第二量化参数值是指至少一个历史视频帧的量化参数值的均值。

为了获得当前视频内容的内容复杂程度,视频编码端还需要确定至少一个历史视频帧的量化参数值的均值,即第二量化参数值。可选地,至少一个历史视频帧是从视频编码的开始时刻至当前时刻之间的所有视频帧,例如,在本申请的技术方案应用于视频通话场景下,至少一个历史视频帧可以是视频通话开启的时刻至当前时刻之间的所有视频帧;或者,至少一个历史视频帧是当前时刻之前的一段时间内的所有视频帧;或者,至少一个历史视频帧是当前视频帧之前的N个视频帧,N为正数,可选地,N为5、10、15等。基于此,视频编码端需要维持一个量化参数值缓存,该量化参数值缓存内的均值即为第二量化参数值,以用于指示近期视频内容的内容复杂程度。可选地,视频编码端维持一个长度为N的量化参数值缓存,N为正数,如N为10。

步骤226,基于第一量化参数值和第二量化参数值,确定参数变化信息。

视频编码端在分别确定了第一量化参数值和第二量化参数值之后,比较第一量化参数值和第二量化参数值,以确定参数变化信息。在一个示例中,上述步骤226,包括:确定第一量化参数值和第二量化参数值之间的参数差值;基于参数差值确定参数变化信息。可选地,上述基于参数差值确定参数变化信息,包括:在参数差值的绝对值大于第二阈值的情况下,确定参数变化信息指示视频内容复杂;在参数差值的绝对值小于第二阈值的情况下,确定参数变化信息指示视频内容简单。可选地,第二阈值为正数。

示例性地,第一量化参数值为QP,第二量化参数值为QPav,其中,QPav=avg(buffer_QP),buffer_OP为视频编码端维持的量化参数值缓存,avg(·)表示求均值函数;则第一量化参数值和第二量化参数值之间的参数差值为QP-QPav。假设第二阈值为Th2,则参数变化信息有如下几种情况:

在|QP-QPav|<Th2的情况下,参数变化信息指示视频内容简单;

在|QP-QPav|>Th2的情况下,参数变化信息指示视频内容复杂。

需要说明的一点是,针对|QP-QPav|=Th2的情况下参数变化信息所指示的内容,本申请实施例对此不作限定,实际应用中,既可以设定这种情况下参数变化信息指示视频内容简单,也可以设定这种情况下参数变化信息指示视频内容复杂。应理解,这些均应属于本申请的保护范围之内。

基于上述关于码率变化信息和参数变化信息的介绍,上述步骤230包括以下步骤(232~238)中的任意一个步骤。

步骤232,在码率变化信息包括码率骤增,且参数变化信息指示视频内容简单的情况下,在目标D帧间隔内逐步增加实时消耗码率;若实时消耗码率在超过目标D帧间隔后大于实时目标码率,则将当前视频帧的原始分辨率确定为目标分辨率;若实时消耗码率在超过目标D帧间隔后小于实时目标码率,则增加当前视频帧的原始分辨率得到目标分辨率。

由于人眼会对简单场景下的画面质量变化更加敏感,所以在参数变化信息指示视频内容简单,且码率变化信息包括码率骤增的情况下,应避免分辨率调控力度过大导致视频的画面质量急剧上升。因此,本申请实施例针对视频内容简单且码率骤增的场景,先采用码率调控,再基于码率调控的结果确定是否采用分辨率调控。

针对视频内容简单且码率骤增的场景,在目标D帧间隔内逐步增加实时消耗码率。可选地,目标D帧为接下来的D帧,D的取值可以为15。若实时消耗码率在超过目标D帧间隔后大于实时目标码率,则说明码率调控已经可以适应当前网络条件,此时,将当前视频帧的原始分辨率确定为目标分辨率。若实时消耗码率在超过目标D帧间隔后小于实时目标码率,则说明码率调控仍然无法与当前网络条件相适应,则继续采用分辨率调控,即增加当前视频帧的原始分辨率得到目标分辨率。在D帧间隔内采用提高码率的方式使得视频的画面质量有所上升,可以实现较为平滑地过渡。

在本示例中,由于码率变化信息包括码率骤增,则在目标D帧间隔内,实时目标码率处于高位,实时消耗码率处于低位,此时,就可能会出现码率的浪费。为了避免码率的浪费,可选地,视频编码端填补冗余纠错包,例如,重发部分关键帧的数据包,以增强关键帧的纠错能力。

步骤234,在码率变化信息包括码率骤降,且参数变化信息指示视频内容简单的情况下,在目标D帧间隔内逐步降低实时消耗码率;若实时消耗码率在超过目标D帧间隔后小于实时目标码率,则将当前视频帧的原始分辨率确定为目标分辨率;若实时消耗码率在超过目标D帧间隔后大于实时目标码率,则降低当前视频帧的原始分辨率得到目标分辨率。

由于人眼会对简单场景下的画面质量变化更加敏感,所以在参数变化信息指示视频内容简单,且码率变化信息包括码率骤降的情况下,应避免分辨率调控力度过大导致视频的画面质量急剧下降。因此,本申请实施例针对视频内容简单且码率骤降的场景,先采用码率调控,再基于码率调控的结果确定是否采用分辨率调控。

针对视频内容简单且码率骤降的场景,在目标D帧间隔内逐步降低实时消耗码率。可选地,目标D帧为接下来的D帧,D的取值可以为15。若实时消耗码率在超过目标D帧间隔后小于实时目标码率,则说明码率调控已经可以适应当前网络条件,此时,将当前视频帧的原始分辨率确定为目标分辨率。若实时消耗码率在超过目标D帧间隔后大于实时目标码率,则说明码率调控仍然无法与当前网络条件相适应,则继续采用分辨率调控,即降低当前视频帧的原始分辨率得到目标分辨率。在D帧间隔内采用降低码率的方式使得视频的画面质量有所下降,可以实现较为平滑地过渡。

步骤236,在码率变化信息包括码率骤增,且参数变化信息指示视频内容复杂的情况下,在目标D帧间隔内逐步增加实时消耗码率;若实时消耗码率在超过目标D帧间隔后大于实时目标码率,则将当前视频帧的原始分辨率确定为目标分辨率;若实时消耗码率在超过目标D帧间隔后小于实时目标码率,则增加当前视频帧的原始分辨率得到目标分辨率。

在参数变化信息指示视频内容复杂的情况下,历史视频帧编码后的实际量化参数较大;而由于码率变化信息包括码率骤增,从而实时目标码率较高、量化参数值较小。因此,本申请实施例针对视频内容复杂且码率骤增的场景,先采用码率调控逐帧提升视频的画面质量,再基于码率调控的结果确定是否采用分辨率调控。

针对视频内容复杂且码率骤增的场景,在目标D帧间隔内逐步增加实时消耗码率。可选地,目标D帧为接下来的D帧,D的取值可以为15。若实时消耗码率在超过目标D帧间隔后大于实时目标码率,则说明码率调控已经可以适应当前网络条件,此时,将当前视频帧的原始分辨率确定为目标分辨率。若实时消耗码率在超过目标D帧间隔后小于实时目标码率,则说明码率调控仍然无法与当前网络条件相适应,则继续采用分辨率调控,即增加当前视频帧的原始分辨率得到目标分辨率。在D帧间隔内采用提高码率的方式使得视频的画面质量有所上升,可以实现较为平滑地过渡。

步骤238,在码率变化信息包括码率骤降,且参数变化信息指示视频内容复杂的情况下,降低当前视频帧的原始分辨率得到目标分辨率。

在参数变化信息指示视频内容复杂的情况下,历史视频帧编码后的实际量化参数较大;而由于码率变化信息包括码率骤降,从而实时目标码率较低、量化参数值较大。因此,针对视频内容复杂且码率骤降的场景,难以通过码率的调控实现与当前网络条件的适应,本申请实施例直接对分辨率进行调控,即降低当前视频帧的原始分辨率得到目标分辨率,以保证码率的跟随性。

可选地,在码率变化信息包括码率未发生剧烈变化的情况下,可以直接采用编码器内部的码率调控方案,而无需采用分辨率调控,从而视频编码端直接将当前视频帧的原始分辨率确定为目标分辨率。

综上所述,本申请实施例提供的技术方案,通过结合网络质量的波动和视频内容的复杂程度,将分辨率的调控分为多种类型。并且,针对视频内容简单的场景,无论网络质量如何波动,由于人眼对会对简单场景下的画面质量变化更加敏感,所以先采用码率调控的方式平滑视频的画面质量变化,在码率调控无法适应网络质量时,再采用分辨率调控的方式,有效避免了视频的画面质量的急剧变化。另外,针对视频内容复杂的场景,在码率骤降时,直接调控分辨率以确保码率的跟随性;在码率骤增时,先调控码率以优先确保画面质量变化的平滑性,有效避免画面质量的急剧变化。本申请实施例通过上述精细化的分辨率调控方案,提升了视频播放效果或视频通话效果等,为用户带来了更好的视频播放或视频通话体验。

上述实施例所介绍的分辨率调控方案中,是采用当前视频帧的前一视频帧的量化参数值作为当前视频帧的内容复杂程度的度量,这适应于视频前后帧之间的差异很小的情况。基于此,在采用上述实施例所介绍的分辨率调控方案之前,还需要确定场景是否发生变化。

基于此,在一个示例中,上述方法还包括如下步骤。

步骤250,检测当前视频内容相对于历史视频内容的场景变化。

在视频播放或视频通话等场景中,一旦发生场景变化,则视频内容的内容复杂程度将可能产生较大改变,从而可能会造成较大的码率波动,对上述实施例所介绍的分辨率调控方案产生干扰。因此,本申请实施例可以先检测当前视频内容相对于历史视频内容的场景变化,以避免场景变化对分辨率调控带来的误差和不利影响。本申请实施例对场景变化的检测方法不作限定,可选地,场景变化的检测方法包括:关键块匹配算法、全帧匹配算法、下采样帧匹配算法等。通常,关键块匹配算法的计算复杂度较低。下面,对关键块匹配算法应用于检测场景变化的过程进行介绍说明。

在一个示例中,上述步骤250包括如下几个步骤(252~258)。

步骤252,从当前视频帧中确定至少一个关键块。

本申请实施例对关键块的选取数量、选取位置、大小等均不作限定。在一个示例中,视频编码端从当前视频帧中确定a个关键块,a为正整数,如4、5、6等。在一个示例中,至少一个关键块的大小均相同,例如,大小均为16×16像素,或均为8×8像素,或均为32×32像素,或均为4×4像素,或均为64×64像素;或者,至少一个关键块的大小不完全相同,如一个关键块的大小为16×16像素,另一个关键块的大小为32×32像素等。在一个示例中,至少一个关键块在当前视频帧中均匀分布,或者,至少一个关键块集中在当前视频帧中的某一区域,例如,至少一个关键帧集中在当前视频帧的中间区域。

示例性地,视频编码端从当前视频帧中确定5个关键块,这5个关键块在当前视频帧中均匀分布,且这5个关键块的大小均为16×16像素。例如,如图3所示,在当前视频帧的中心位置及其周围共选取5个16×16像素大小的方块作为关键块,当前视频帧的中心位置的关键块为310,中心位置周围的关键块为320。其中,每个关键块320距关键块310的水平偏移和竖直偏移均为64个像素,从而这5个关键块在当前视频帧中呈现如图3所示的均匀分布。

步骤254,针对至少一个关键块中的第一关键块,在当前视频帧的前一视频帧中与第一关键块对应的位置,以目标半径为搜索半径进行匹配块搜索。

在确定完关键块之后,即进行关键块的匹配。本申请实施例中,将当前视频帧与当前视频帧的前一视频帧进行关键块匹配,从而,针对至少一个关键块中的每一关键块,均需从当前视频帧的前一视频帧中进行匹配块搜索。示例性地,针对至少一个关键块中的第一关键块,首先需要确定第一关键块在当前视频帧的前一视频帧中对应的位置,再在该对应的位置周围以目标半径r为搜索半径进行匹配块搜索。本申请实施例对目标半径的大小不作限定,可选地,目标半径为1像素,或2像素,或4像素,或8像素。

步骤256,若搜索到的方块中存在与第一关键块之间的均方误差小于目标阈值的方块,则确定第一关键块在当前视频帧的前一视频帧中存在匹配块。

如果在当前视频帧的前一视频帧的搜索范围内,能够搜索到某一方块与第一关键块之间的均方误差(Mean Square Error,MSE)小于目标阈值,则将该方块确定为第一关键块的匹配块,即当前视频帧的前一视频帧中存在第一关键块的匹配块。可选地,视频编码端除采用均方误差作为匹配块搜索的准则外,还可以采用MAD(Mean Absolute Deviation,平均绝对误差)、SAD(Sum of Absolute Difference,绝对误差和)等进行匹配块的搜索,本申请实施例对匹配块搜索时采用的匹配准则不作限定。可选地,匹配块与关键块的大小需是相同的,例如,假设第一关键块的大小为16×16像素,则第一关键块的匹配块的大小也为16×16像素。

示例性地,搜索范围内搜索到的方块与关键块之间的均方误差MSE为:

其中,N为关键块的大小,如N为16;Cij为当前视频帧的关键块中第i行第j列对应的像素值;Rij为搜索范围内搜索到的方块中第i行第j列对应的像素值。由上述计算公式计算出的MSE越小,即表示搜索到的方块与关键块之间的相似度越高。本申请实施例中设置了目标阈值Th0,在MSE小于Th0时,即认为搜索到的方块为关键块的匹配块。

本申请实施例中,在至少一个关键块在当前视频帧的前一视频帧中均存在匹配块的情况下,认为当前视频帧与前一视频帧相似,即确定当前视频帧相对于历史视频帧未发生场景变化;而若至少一个关键块中存在某一关键块在当前视频帧的前一视频帧中不存在匹配块的情况下,确定当前视频帧相对于历史视频帧发生场景变化。

当然,在实际应用中,也可以在至少一个关键块中目标数量的关键块在当前视频帧的前一视频帧中存在匹配块的情况下,确定当前视频帧相对于历史视频帧未发生场景变化。例如,在当前视频帧中选取了5个关键块,在这5个关键块中的4个关键块在当前视频帧的前一视频帧中存在匹配块的情况下,确定当前视频帧相对于历史视频帧未发生场景变化。应理解,这些方案也应属于本申请的保护范围之内。

基于上述场景变化检测,在一个示例中,上述步骤230实现为:在当前视频内容相对于历史视频内容未发生场景变化的情况下,基于码率变化信息和参数变化信息,确定目标分辨率。也即,在检测出场景未发生变化时,采用上述实施例提供的分辨率调控方案,结合网络质量的波动和视频内容的复杂程度来确定目标分辨率。

基于上述场景变化检测,在另一个示例中,上述步骤256之后,还包括:在当前视频内容相对于历史视频内容发生场景变化的情况下,将目标对应关系中与实时目标码率对应的分辨率,确定为目标分辨率;其中,目标对应关系包括至少一组目标码率与分辨率之间的对应关系。也即,在检测出场景发生变化时,采用码表方案来确定目标分辨率,视频编码端从目标对应关系中确定实时目标码率对应的分辨率,将该分辨率作为目标分辨率。

综上所述,本申请实施例提供的技术方案,通过检测当前视频内容相对于历史视频内容的场景变化,在检测到未发生场景变化的情况下,结合网络质量的波动和视频内容的复杂程度来确定目标分辨率,有效避免了由于场景变化所产生的码率波动对分辨率调控的影响,提升了分辨率调控的准确性。

下面,以一个示例性实施例对本申请提供的视频编码方法进行介绍说明。

请参考图4,其示出了本申请一个实施例提供的视频编码方法的流程图。该方法可以应用于图1所示即时通讯场景的视频编码端110中。如图4所示,该方法包括如下几个步骤(401至412)。

步骤401,获取视频帧数据。在开启视频通话或进行视频播放(如进行视频直播)的情况下,视频编码端的视频采集模块可以调用相机模组以目标帧率进行视频帧的采集,并将采集到的视频帧数据传输至视频编码端的音视频处理模块进行处理。

步骤402,获取网络质量反馈。视频编码端的音视频处理模块可以利用带宽估计方法确定实时目标码率R,用于指示当前网络条件。同时,本步骤会维持一个码率缓存buffer_R,该码率缓存buffer_R可以为秒级的码率缓存,如5秒。码率缓存的均值Rav为历史平均码率,用于指示历史网络条件。

步骤403,获取视频内容反馈。当码率较为平稳时,视频帧的纹理复杂度越高,编码后的实际量化参数值就越大。因此,本步骤采用量化参数值指示视频内容的内容复杂程度。视频编码端获取当前视频帧的前一视频帧的量化参数值,即第一量化参数值QP。同时,视频编码端建立并维护一个长度为N的量化参数值缓存buffer_QP,可选地,N取值为10。该量化参数值缓存buffer_QP的均值为第二量化参数值QPav,用于指示近期视频内容的内容复杂程度。

步骤404,检测场景是否发生变化。一旦发生场景变化,则视频内容的内容复杂程度将可能产生较大改变,从而可能会造成较大的码率波动。因此,先检测当前视频内容相对于历史视频内容的场景变化,以避免场景变化对分辨率调控带来的误差和不利影响。视频编码端建立一个帧级缓存buffer_pre,用于存储当前视频帧的前一视频帧数据,从而,视频编码端每收到实时的当前视频帧时,将当前视频帧与前一视频帧进行关键块匹配,以检测当前视频内容相对于历史视频内容是否发生场景变化。在未发生场景变化的情况下,执行下述步骤405;在发生场景变化的情况下,执行下述步骤411。

步骤405,检测网络质量是否波动。视频编码端比较上述步骤402获取的实时目标码率R和历史平均码率Rav,以确定网络质量是否产生较大波动。若实时目标码率R和历史平均码率Rav之间的码率差值大于第一阈值Th1,则确定网络质量产生较大波动、码率急剧变化,执行下述步骤406。若实时目标码率R和历史平均码率Rav之间的码率差值小于或等于第一阈值Th1,则确定网络质量波动较小,保持当前视频帧的原始分辨率,也即,将当前视频帧的原始分辨率作为目标分辨,执行下述步骤412。

步骤406,确定内容复杂程度。视频编码端比较上述步骤403获取的第一量化参数值QP和第二量化参数值QPav,以确定视频内容的内容复杂程度。若第一量化参数值QP和第二量化参数值QPav之间的参数差值的绝对值大于第二阈值Th2,则指示视频内容复杂;若第一量化参数值QP和第二量化参数值QPav之间的参数差值的绝对值小于第二阈值Th2,则指示视频内容简单。

步骤407,执行视频内容简单且码率骤增场景下的调控方案。此时,在目标D帧间隔内先逐步增加实时消耗码率。若实时消耗码率在超过目标D帧间隔后大于实时目标码率,则说明码率调控已经可以适应当前网络条件,此时,将当前视频帧的原始分辨率确定为目标分辨率。若实时消耗码率在超过目标D帧间隔后小于实时目标码率,则说明码率调控仍然无法与当前网络条件相适应,则继续采用分辨率调控,即增加当前视频帧的原始分辨率得到目标分辨率。

步骤408,执行视频内容简单且码率骤降场景下的调控方案。此时,在目标D帧间隔内先逐步降低实时消耗码率。若实时消耗码率在超过目标D帧间隔后小于实时目标码率,则说明码率调控已经可以适应当前网络条件,此时,将当前视频帧的原始分辨率确定为目标分辨率。若实时消耗码率在超过目标D帧间隔后大于实时目标码率,则说明码率调控仍然无法与当前网络条件相适应,则继续采用分辨率调控,即降低当前视频帧的原始分辨率得到目标分辨率。

步骤409,执行视频内容复杂且码率骤增场景下的调控方案。此时,在目标D帧间隔内先逐步增加实时消耗码率。若实时消耗码率在超过目标D帧间隔后大于实时目标码率,则说明码率调控已经可以适应当前网络条件,此时,将当前视频帧的原始分辨率确定为目标分辨率。若实时消耗码率在超过目标D帧间隔后小于实时目标码率,则说明码率调控仍然无法与当前网络条件相适应,则继续采用分辨率调控,即增加当前视频帧的原始分辨率得到目标分辨率。

步骤410,执行视频内容复杂且码率骤降场景下的调控方案。此时,直接对分辨率进行调控,即降低当前视频帧的原始分辨率得到目标分辨率。

步骤411,采用码表方案进行分辨率调控。在发生场景变化的情况下,上述步骤405至步骤410中的调控方案将不再适用,此时,采用码表方案,选择实时目标码率对应的分辨率,作为目标分辨率。同时,本步骤将上述步骤402中维护的码率缓存buffer_R和上述步骤403中维护的量化参数值缓存buffer_QP均清零。

步骤412,采用目标分辨率对当前视频帧进行编码。视频编码端基于目标分辨率对当前视频帧进行缩放处理,待当前视频帧的分辨率与目标分辨率匹配后,将当前视频帧输入编码器进行视频编码。同时,视频编码端更新上述步骤404中维护的帧级缓存buffer_pre。

下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。

请参考图5,其示出了本申请一个实施例提供的视频编码装置的框图。该装置具有实现上述视频编码方法示例的功能,所述功能可以由硬件实现,也可以由硬件执行相应的软件实现。该装置可以是上述视频编码端,也可以设置在上述视频编码端中。该装置500可以包括:码率信息获取模块510、参数信息获取模块520、分辨率确定模块530和视频编码模块540。

码率信息获取模块510,用于获取当前网络条件对应的码率变化信息,所述码率变化信息用于指示所述当前网络条件相对于历史网络条件的波动。

参数信息获取模块520,用于获取当前视频内容对应的参数变化信息,所述参数变化信息用于指示所述当前视频内容的内容复杂程度。

分辨率确定模块530,用于基于所述码率变化信息和所述参数变化信息,确定目标分辨率。

视频编码模块540,用于采用所述目标分辨率对所述当前视频帧进行编码。

在一个示例中,所述码率信息获取模块510,用于:确定实时目标码率,所述实时目标码率用于指示所述当前网络条件;获取历史平均码率,所述历史平均码率用于指示所述历史网络条件;基于所述实时目标码率和所述历史平均码率,确定所述码率变化信息。

在一个示例中,所述基于所述实时目标码率和所述历史平均码率,确定所述码率变化信息,包括:确定所述实时目标码率和所述历史平均码率之间的码率差值;在所述码率差值的绝对值大于第一阈值,且所述码率差值为正数的情况下,确定所述码率变化信息包括码率发生剧烈变化,且码率骤增;在所述码率差值的绝对值大于第一阈值,且所述码率差值为负数的情况下,确定所述码率变化信息包括码率发生剧烈变化,且码率骤降;在所述码率差值的绝对值小于第一阈值的情况下,确定所述码率变化信息包括码率未发生剧烈变化。

在一个示例中,所述参数信息获取模块520,用于:获取第一量化参数值,所述第一量化参数值是指所述当前视频帧的前一视频帧的量化参数值;获取第二量化参数值,所述第二量化参数值是指至少一个历史视频帧的量化参数值的均值;基于所述第一量化参数值和所述第二量化参数值,确定所述参数变化信息。

在一个示例中,所述基于所述第一量化参数值和所述第二量化参数值,确定所述参数变化信息,包括:确定所述第一量化参数值和所述第二量化参数值之间的参数差值;在所述参数差值的绝对值大于第二阈值的情况下,确定所述参数变化信息指示视频内容复杂;在所述参数差值的绝对值小于第二阈值的情况下,确定所述参数变化信息指示视频内容简单。

在一个示例中,所述分辨率确定模块530,用于:在所述码率变化信息包括码率骤增,且所述参数变化信息指示视频内容简单的情况下,在目标D帧间隔内逐步增加实时消耗码率;若所述实时消耗码率在超过所述目标D帧间隔后大于实时目标码率,则将所述当前视频帧的原始分辨率确定为所述目标分辨率;若所述实时消耗码率在超过所述目标D帧间隔后小于实时目标码率,则增加所述当前视频帧的原始分辨率得到所述目标分辨率;在所述码率变化信息包括码率骤降,且所述参数变化信息指示视频内容简单的情况下,在目标D帧间隔内逐步降低实时消耗码率;若所述实时消耗码率在超过所述目标D帧间隔后小于实时目标码率,则将所述当前视频帧的原始分辨率确定为所述目标分辨率;若所述实时消耗码率在超过所述目标D帧间隔后大于实时目标码率,则降低所述当前视频帧的原始分辨率得到所述目标分辨率;在所述码率变化信息包括码率骤增,且所述参数变化信息指示视频内容复杂的情况下,在目标D帧间隔内逐步增加实时消耗码率;若所述实时消耗码率在超过所述目标D帧间隔后大于实时目标码率,则将所述当前视频帧的原始分辨率确定为所述目标分辨率;若所述实时消耗码率在超过所述目标D帧间隔后小于实时目标码率,则增加所述当前视频帧的原始分辨率得到所述目标分辨率;在所述码率变化信息包括码率骤降,且所述参数变化信息指示视频内容复杂的情况下,降低所述当前视频帧的原始分辨率得到所述目标分辨率。

在一个示例中,所述分辨率确定模块530,还用于:在所述码率变化信息包括码率未发生剧烈变化的情况下,将所述当前视频帧的原始分辨率确定为所述目标分辨率。

在一个示例中,所述视频编码模块540,用于:在所述目标分辨率大于所述当前视频帧的原始分辨率的情况下,对所述当前视频帧进行上采样处理;在经过所述上采样处理后的所述当前视频帧的分辨率与所述目标分辨率匹配的情况下,采用所述目标分辨率对经过所述上采样处理后的所述当前视频帧进行编码;在所述目标分辨率小于所述当前视频帧的原始分辨率的情况下,对所述当前视频帧进行下采样处理;在经过所述下采样处理后的所述当前视频帧的分辨率与所述目标分辨率匹配的情况下,采用所述目标分辨率对经过所述下采样处理后的所述当前视频帧进行编码。

在一个示例中,如图6所示,所述装置500还包括:场景变化检测模块550,用于检测所述当前视频内容相对于历史视频内容的场景变化;所述分辨率确定模块530,用于在所述当前视频内容相对于所述历史视频内容未发生场景变化的情况下,基于所述码率变化信息和所述参数变化信息,确定所述目标分辨率。

在一个示例中,如图6所示,所述场景变化检测模块550,用于:从所述当前视频帧中确定至少一个关键块;针对所述至少一个关键块中的第一关键块,在所述当前视频帧的前一视频帧中与所述第一关键块对应的位置,以目标半径为搜索半径进行匹配块搜索;若搜索到的方块中存在与所述第一关键块之间的均方误差小于目标阈值的方块,则确定所述第一关键块在所述当前视频帧的前一视频帧中存在匹配块;其中,在所述至少一个关键块在所述当前视频帧的前一视频帧中均存在匹配块的情况下,确定所述当前视频内容相对于所述历史视频内容发生场景变化。

在一个示例中,所述分辨率确定模块530,还用于:在所述当前视频内容相对于所述历史视频内容发生场景变化的情况下,将目标对应关系中与实时目标码率对应的分辨率,确定为所述目标分辨率;其中,所述目标对应关系包括至少一组目标码率与分辨率之间的对应关系。

综上所述,本申请实施例提供的技术方案,通过在视频编码过程中,结合网络质量的波动和视频内容的复杂程度,确定对当前视频帧编码时采用的分辨率,实现了更加准确地进行分辨率的调控。由于人眼会对简单场景下的画面质量变化更加敏感,本申请在调控分辨率时结合了视频内容的复杂程度,考虑了人眼针对视频内容的不同内容复杂程度的敏感情况,从而使得分辨率的调控更加准确和全面。并且,本申请在调控分辨率时同时考虑了网络质量的波动和视频内容的复杂程度,在网络质量波动过于频繁时,有效避免了分辨率的频繁切换,有助于降低由于网络质量频繁波动所产生的呼吸效应,提升用户的视频观看和通话体验。

需要说明的是,上述实施例提供的装置在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

在示例性实施例中,还提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有计算机程序,所述计算机程序由所述处理器加载并执行以实现如上述视频编码方法。

在示例性实施例中,还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述视频编码方法。

在示例性实施例中,还提供一种计算机程序产品,当所述计算机程序产品在计算机设备上运行时,使得计算机设备执行如上述视频编码方法。

以上所述仅为本申请的示例性实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜