CN115866297A - 视频处理方法、装置、设备及存储介质 - Google Patents
视频处理方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN115866297A CN115866297A CN202211485729.3A CN202211485729A CN115866297A CN 115866297 A CN115866297 A CN 115866297A CN 202211485729 A CN202211485729 A CN 202211485729A CN 115866297 A CN115866297 A CN 115866297A
- Authority
- CN
- China
- Prior art keywords
- video
- frames
- frame rate
- frame
- video frames
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本申请提供了一种视频处理方法、装置、设备及存储介质,该方法包括:获取原始视频的第一视频帧序列;生成第一视频帧序列中的N个视频帧各自的重复帧,N为正整数;将N个视频帧各自的重复帧插入N个视频帧各自之后,以生成第二视频帧序列,其中,N个视频帧各自的参考帧不同于N个视频帧各自的重复帧的参考帧;将N个视频帧各自的重复帧作为与N个视频帧各自不同的视频帧,以对第二视频帧序列进行编码,得到码流;输出码流。从而在降低视频帧内容从服务器端发出到客户端本地播放间的延时的同时,可以保证正常的视频渲染和显示,提高了用户体验感。
Description
技术领域
本申请实施例涉及图像处理技术领域,尤其涉及一种视频处理方法、装置、设备及存储介质。
背景技术
实时视频流播放应用,例如云游戏、视频直播、视频会议等,往往会要求视频帧内容从服务器端发出到客户端本地播放间的延时低于用户可察觉的延时。这一点和这些应用的用户体验关系密切,甚至直接影响这些应用的使用性。在实际运营过程中发现客户端的解码时间较长是导致视频帧内容从服务器端发出到客户端本地播放间的延时较高的主要原因。许多客户端的解码器有一个特点:解码器的工作频率随着送帧间隔的变化而变化,其中,当送帧间隔过大时,解码器的工作频率会下降,解码一个视频帧会消耗其在高工作频率下解码一个视频帧耗时的数倍。
相关技术中提出在客户端侧复制其收到的视频帧,并进行连续送帧解码,使客户端的解码器维持在较高的工作频率并保持较高的解码性能。由于在客户端对码流进行解码时,视频帧之间具有依赖性,即每一个视频帧的解码需要依赖参考帧。通常解码器在解码完一个视频帧之后,会留存一份在它的用于缓存参考帧的参考帧缓存中,供后面依赖它的视频帧解码时参考。
然而,有的客户端其参考帧缓存有限,使得当采用复制视频帧的方式时,连续送入相同帧解码会导致参考帧缓存中的其他参考帧被覆盖,导致后面依赖这些其他参考帧的视频帧无法正常解码,进而导致后续的视频帧均无法正常解码,最终影响了正常的视频渲染和显示,降低了用户体验感。
发明内容
本申请提供一种视频处理方法、装置、设备及存储介质,从而在降低视频帧内容从服务器端发出到客户端本地播放间的延时的同时,可以保证正常的视频渲染和显示,提高了用户体验感。
第一方面,本申请实施例提供一种视频处理方法,该方法应用于服务器,该方法包括:获取原始视频的第一视频帧序列;生成第一视频帧序列中的N个视频帧各自的重复帧,N为正整数;将N个视频帧各自的重复帧插入N个视频帧各自之后,以生成第二视频帧序列,其中,N个视频帧各自的参考帧不同于N个视频帧各自的重复帧的参考帧;将N个视频帧各自的重复帧作为与N个视频帧各自不同的视频帧,以对第二视频帧序列进行编码,得到码流;输出码流。
第二方面,本申请实施例提供一种视频处理方法,该方法应用于客户端,该方法包括:获取码流;解析码流,以得到第二视频帧序列;对第二视频帧序列进行视频帧渲染;其中,第二视频帧序列是对原始视频的第一视频帧序列中N个视频帧插入各自的重复帧之后得到的视频帧序列,N为正整数,N个视频帧各自的参考帧不同于N个视频帧各自的重复帧的参考帧。
第三方面,本申请实施例提供一种服务器,包括:获取模块、第一生成模块、第二生成模块、编码模块和输出模块,获取模块用于获取原始视频的第一视频帧序列;第一生成模块用于生成第一视频帧序列中的N个视频帧各自的重复帧,N为正整数;第二生成模块用于将N个视频帧各自的重复帧插入N个视频帧各自之后,以生成第二视频帧序列,其中,N个视频帧各自的参考帧不同于N个视频帧各自的重复帧的参考帧;编码模块用于将N个视频帧各自的重复帧作为与N个视频帧各自不同的视频帧,以对第二视频帧序列进行编码,得到码流;输出模块用于输出码流。
第四方面,本申请实施例提供一种客户端,包括:获取模块、解析模块和渲染模块,获取模块用于获取码流;解析模块用于解析码流,以得到第二视频帧序列;渲染模块用于对第二视频帧序列进行视频帧渲染;其中,第二视频帧序列是对原始视频的第一视频帧序列中N个视频帧插入各自的重复帧之后得到的视频帧序列,N为正整数,N个视频帧各自的参考帧不同于N个视频帧各自的重复帧的参考帧。
第五方面,本申请实施例提供一种电子设备,包括:处理器和存储器,该存储器用于存储计算机程序,该处理器用于调用并运行该存储器中存储的计算机程序,执行如第一方面、第二方面或其各实现方式中的方法。
第六方面,本申请实施例提供一种计算机可读存储介质,用于存储计算机程序,计算机程序使得计算机执行如第一方面、第二方面或其各实现方式中的方法。
第七方面,本申请实施例提供一种计算机程序产品,包括计算机程序指令,该计算机程序指令使得计算机执行如第一方面、第二方面或其各实现方式中的方法。
第八方面,本申请实施例提供一种计算机程序,计算机程序使得计算机如执行如第一方面、第二方面或其各实现方式中的方法。
通过本申请提供的技术方案,由于服务器将第二视频帧序列中的各个视频帧作为不同的视频帧进行编码,那么这些视频帧的参考关系不同,基于此,对于客户端来讲,如果其参考帧缓存有限,也不会存在某一视频帧在参考帧缓存中无法找到对应的参考帧。从而在降低视频帧内容从服务器端发出到客户端本地播放间的延时的同时,可以保证正常的视频渲染和显示,提高了用户体验感。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例涉及的一种视频编解码系统的示意性框图;
图2是本申请实施例提供的视频编码器的示意性框图;
图3是本申请实施例提供的视频解码器的示意性框图;
图4为本申请实施例提供的一种视频处理方法的交互流程图;
图5为原始帧率为60fps时重复帧的插入情况示意图;
图6为本申请实施例提供的一种服务器600的示意图;
图7为本申请实施例提供的一种客户端700的示意图;
图8是本申请实施例提供的电子设备的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了便于理解,首先结合图1对本申请实施例涉及的视频编解码系统进行介绍。
图1为本申请实施例涉及的一种视频编解码系统的示意性框图。需要说明的是,图1只是一种示例,本申请实施例的视频编解码系统包括但不限于图1所示。如图1所示,该视频编解码系统100包含编码设备110和解码设备120。其中编码设备用于对视频数据进行编码(可以理解成压缩)产生码流,并将码流传输给解码设备。解码设备对编码设备编码产生的码流进行解码,得到解码后的视频数据。
本申请实施例的编码设备110可以理解为具有视频编码功能的设备,解码设备120可以理解为具有视频解码功能的设备,即本申请实施例对编码设备110和解码设备120包括更广泛的装置,例如包含智能手机、台式计算机、移动计算装置、笔记本(例如,膝上型)计算机、平板计算机、机顶盒、电视、相机、显示装置、数字媒体播放器、视频游戏控制台、车载计算机等。
在一些实施例中,编码设备110可以经由信道130将编码后的视频数据(如码流)传输给解码设备120。信道130可以包括能够将编码后的视频数据从编码设备110传输到解码设备120的一个或多个媒体和/或装置。
在一个实例中,信道130包括使编码设备110能够实时地将编码后的视频数据直接发射到解码设备120的一个或多个通信媒体。在此实例中,编码设备110可根据通信标准来调制编码后的视频数据,且将调制后的视频数据发射到解码设备120。其中通信媒体包含无线通信媒体,例如射频频谱,可选的,通信媒体还可以包含有线通信媒体,例如一根或多根物理传输线。
在另一实例中,信道130包括存储介质,该存储介质可以存储编码设备110编码后的视频数据。存储介质包含多种本地存取式数据存储介质,例如光盘、DVD、快闪存储器等。在该实例中,解码设备120可从该存储介质中获取编码后的视频数据。
在另一实例中,信道130可包含存储服务器,该存储服务器可以存储编码设备110编码后的视频数据。在此实例中,解码设备120可以从该存储服务器中下载存储的编码后的视频数据。可选的,该存储服务器可以存储编码后的视频数据且可以将该编码后的视频数据发射到解码设备120,例如web服务器(例如,用于网站)、文件传送协议(FTP)服务器等。
一些实施例中,编码设备110包含视频编码器112及输出接口113。其中,输出接口113可以包含调制器/解调器(调制解调器)和/或发射器。
在一些实施例中,编码设备110除了包括视频编码器112和输入接口113外,还可以包括视频源111。
视频源111可包含视频采集装置(例如,视频相机)、视频存档、视频输入接口、计算机图形系统中的至少一个,其中,视频输入接口用于从视频内容提供者处接收视频数据,计算机图形系统用于产生视频数据。
视频编码器112对来自视频源111的视频数据进行编码,产生码流。视频数据可包括一个或多个图像(picture)或图像序列(sequence of pictures)。码流以比特流的形式包含了图像或图像序列的编码信息。编码信息可以包含编码图像数据及相关联数据。相关联数据可包含序列参数集(sequence parameter set,简称SPS)、图像参数集(pictureparameter set,简称PPS)及其它语法结构。SPS可含有应用于一个或多个序列的参数。PPS可含有应用于一个或多个图像的参数。语法结构是指码流中以指定次序排列的零个或多个语法元素的集合。
视频编码器112经由输出接口113将编码后的视频数据直接传输到解码设备120。编码后的视频数据还可存储于存储介质或存储服务器上,以供解码设备120后续读取。
在一些实施例中,解码设备120包含输入接口121和视频解码器122。
在一些实施例中,解码设备120除包括输入接口121和视频解码器122外,还可以包括显示装置123。
其中,输入接口121包含接收器及/或调制解调器。输入接口121可通过信道130接收编码后的视频数据。
视频解码器122用于对编码后的视频数据进行解码,得到解码后的视频数据,并将解码后的视频数据传输至显示装置123。
显示装置123显示解码后的视频数据。显示装置123可与解码设备120整合或在解码设备120外部。显示装置123可包括多种显示装置,例如液晶显示器(LCD)、等离子体显示器、有机发光二极管(OLED)显示器或其它类型的显示装置。
此外,图1仅为实例,本申请实施例的技术方案不限于图1,例如本申请的技术还可以应用于单侧的视频编码或单侧的视频解码。
下面对本申请实施例涉及的视频编码器进行介绍。
图2是本申请实施例提供的视频编码器的示意性框图。应理解,该视频编码器200可用于对图像进行有损压缩(lossy compression),也可用于对图像进行无损压缩(lossless compression)。该无损压缩可以是视觉无损压缩(visually losslesscompression),也可以是数学无损压缩(mathematically lossless compression)。
该视频编码器200可应用于亮度色度(YCbCr,YUV)格式的图像数据上。例如,YUV比例可以为4:2:0、4:2:2或者4:4:4,Y表示明亮度(Luma),Cb(U)表示蓝色色度,Cr(V)表示红色色度,U和V表示为色度(Chroma)用于描述色彩及饱和度。例如,在颜色格式上,4:2:0表示每4个像素有4个亮度分量,2个色度分量(YYYYCbCr),4:2:2表示每4个像素有4个亮度分量,4个色度分量(YYYYCbCrCbCr),4:4:4表示全像素显示(YYYYCbCrCbCrCbCrCbCr)。
例如,该视频编码器200读取视频数据,针对视频数据中的每帧图像,将一帧图像划分成若干个编码树单元(coding tree unit,CTU)、“最大编码单元”(Largest Codingunit,简称LCU)或“编码树型块”(coding tree block,简称CTB)。每一个CTU可以与图像内的具有相等大小的像素块相关联。每一像素可对应一个亮度(luminance或luma)采样及两个色度(chrominance或chroma)采样。因此,每一个CTU可与一个亮度采样块及两个色度采样块相关联。一个CTU大小例如为128×128、64×64、32×32等。一个CTU又可以继续被划分成若干个编码单元(Coding Unit,CU)进行编码,CU可以为矩形块也可以为方形块。CU可以进一步划分为预测单元(prediction Unit,简称PU)和变换单元(transform unit,简称TU),进而使得编码、预测、变换分离,处理的时候更灵活。在一种示例中,CTU以四叉树方式划分为CU,CU以四叉树方式划分为TU、PU。
视频编码器及视频解码器可支持各种PU大小。假定特定CU的大小为2N×2N,视频编码器及视频解码器可支持2N×2N或N×N的PU大小以用于帧内预测,且支持2N×2N、2N×N、N×2N、N×N或类似大小的对称PU以用于帧间预测。视频编码器及视频解码器还可支持2N×nU、2N×nD、nL×2N及nR×2N的不对称PU以用于帧间预测。
在一些实施例中,如图2所示,该视频编码器200可包括:预测单元210、残差单元220、变换/量化单元230、反变换/量化单元240、重建单元250、环路滤波单元260、解码图像缓存270和熵编码单元280。需要说明的是,视频编码器200可包含更多、更少或不同的功能组件。
可选的,在本申请中,当前块(current block)可以称为当前编码单元(CU)或当前预测单元(PU)等。预测块也可称为预测待编码块或图像预测块,重建待编码块也可称为重建块或图像重建待编码块。
在一些实施例中,预测单元210包括帧间预测单元211和帧内估计单元212。由于视频的一个帧中的相邻像素之间存在很强的相关性,在视频编解码技术中使用帧内预测的方法消除相邻像素之间的空间冗余。由于视频中的相邻帧之间存在着很强的相似性,在视频编解码技术中使用帧间预测方法消除相邻帧之间的时间冗余,从而提高编码效率。
帧间预测单元211可用于帧间预测,帧间预测可以参考不同帧的图像信息,帧间预测使用运动信息从参考帧中找到参考块,根据参考块生成预测块,用于消除时间冗余;帧间预测所使用的帧可以为P帧和/或B帧,P帧指的是向前预测帧,B帧指的是双向预测帧。运动信息包括参考帧所在的参考帧列表,参考帧索引,以及运动矢量。运动矢量可以是整像素的或者是分像素的,如果运动矢量是分像素的,那么需要在参考帧中使用插值滤波做出所需的分像素的块,这里把根据运动矢量找到的参考帧中的整像素或者分像素的块叫参考块。有的技术会直接把参考块作为预测块,有的技术会在参考块的基础上再处理生成预测块。在参考块的基础上再处理生成预测块也可以理解为把参考块作为预测块然后再在预测块的基础上处理生成新的预测块。
目前最常用的帧间预测方法包括:VVC视频编解码标准中的几何划分模式(geometric partitioning mode,GPM),以及AVS3视频编解码标准中的角度加权预测(angular weighted prediction,AWP)。这两种帧间预测模式在原理上有共通之处。本申请涉及的帧间模式包括但不限于上述列举的帧间模式。
帧内估计单元212只参考同一帧图像的信息,预测当前帧待编码块内的像素信息,用于消除空间冗余。帧内预测所使用的帧可以为I帧。
在一些实施例中,帧内预测方法还包括多参考行帧内预测方法(multiplereference line,MRL),MRL可以使用更多的参考像素从而提高编码效率。
帧内预测有多种预测模式,H.264中对4×4的块进行帧内预测的9种模式。其中模式0是将当前块上面的像素按竖直方向复制到当前块作为预测值;模式1是将左边的参考像素按水平方向复制到当前块作为预测值;模式2(DC)是将A~D和I~L这8个点的平均值作为所有点的预测值,模式3至模式8是分别按某一个角度将参考像素复制到当前块的对应位置。因为当前块某些位置不能正好对应到参考像素,可能需要使用参考像素的加权平均值,或者说是插值的参考像素的分像素。
HEVC使用的帧内预测模式有平面模式(Planar)、DC和33种角度模式,共35种预测模式。VVC使用的帧内模式有Planar、DC和65种角度模式,共67种预测模式。AVS3使用的帧内模式有DC、Plane、Bilinear和63种角度模式,共66种预测模式。
需要说明的是,随着角度模式的增加,帧内预测将会更加精确,也更加符合对高清以及超高清数字视频发展的需求。
残差单元220可基于CU的像素块及CU的PU的预测块来产生CU的残差块。举例来说,残差单元220可产生CU的残差块,使得残差块中的每一采样具有等于以下两者之间的差的值:CU的像素块中的采样,及CU的PU的预测块中的对应采样。
变换/量化单元230可量化变换系数。变换/量化单元230可基于与CU相关联的量化参数(QP)值来量化与CU的TU相关联的变换系数。视频编码器200可通过调整与CU相关联的QP值来调整应用于与CU相关联的变换系数的量化程度。
反变换/量化单元240可分别将逆量化及逆变换应用于量化后的变换系数,以从量化后的变换系数重建残差块。
重建单元250可将重建后的残差块的采样加到预测单元210产生的一个或多个预测块的对应采样,以产生与TU相关联的重建待编码块。通过此方式重建CU的每一个TU的采样块,视频编码器200可重建CU的像素块。
环路滤波单元260可执行消块滤波操作以减少与CU相关联的像素块的块效应。
在一些实施例中,环路滤波单元260包括去块滤波单元、样点自适应补偿SAO单元、自适应环路滤波ALF单元。
解码图像缓存270可存储重建后的像素块。帧间预测单元211可使用含有重建后的像素块的参考图像来对其它图像的PU执行帧间预测。另外,帧内估计单元212可使用解码图像缓存270中的重建后的像素块来对在与CU相同的图像中的其它PU执行帧内预测。
熵编码单元280可接收来自变换/量化单元230的量化后的变换系数。熵编码单元280可对量化后的变换系数执行一个或多个熵编码操作以产生熵编码后的数据。
本申请涉及的视频编码的基本流程如下:在编码端,将当前图像划分成块,针对当前块,预测单元210使用帧内预测或帧间预测产生当前块的预测块。残差单元220可基于预测块与当前块的原始块计算残差块,即预测块和当前块的原始块的差值,该残差块也可称为残差信息。该残差块经由变换/量化单元230变换与量化等过程,可以去除人眼不敏感的信息,以消除视觉冗余。可选的,经过变换/量化单元230变换与量化之前的残差块可称为时域残差块,经过变换/量化单元230变换与量化之后的时域残差块可称为频率残差块或频域残差块。熵编码单元280接收到变换量化单元230输出的量化后的变换系数,可对该量化后的变换系数进行熵编码,输出码流。例如,熵编码单元280可根据目标上下文模型以及二进制码流的概率信息消除字符冗余。
另外,视频编码器对变换量化单元230输出的量化后的变换系数进行反量化和反变换,得到当前块的残差块,再将当前块的残差块与当前块的预测块进行相加,得到当前块的重建块。随着编码的进行,可以得到当前图像中其他待编码块对应的重建块,这些重建块进行拼接,得到当前图像的重建图像。由于编码过程中引入误差,为了降低误差,对重建图像进行滤波,例如,使用ALF对重建图像进行滤波,以减小重建图像中像素点的像素值与当前图像中像素点的原始像素值之间差异。将滤波后的重建图像存放在解码图像缓存270中,可以为后续的帧作为帧间预测的参考帧。
需要说明的是,编码端确定的块划分信息,以及预测、变换、量化、熵编码、环路滤波等模式信息或者参数信息等在必要时携带在码流中。解码端通过解析码流及根据已有信息进行分析确定与编码端相同的块划分信息,预测、变换、量化、熵编码、环路滤波等模式信息或者参数信息,从而保证编码端获得的解码图像和解码端获得的解码图像相同。
图3是本申请实施例提供的视频解码器的示意性框图。
如图3所示,视频解码器300包含:熵解码单元310、预测单元320、反量化/变换单元330、重建单元340、环路滤波单元350及解码图像缓存360。需要说明的是,视频解码器300可包含更多、更少或不同的功能组件。
视频解码器300可接收码流。熵解码单元310可解析码流以从码流提取语法元素。作为解析码流的一部分,熵解码单元310可解析码流中的经熵编码后的语法元素。预测单元320、反量化/变换单元330、重建单元340及环路滤波单元350可根据从码流中提取的语法元素来解码视频数据,即产生解码后的视频数据。
在一些实施例中,预测单元320包括帧内估计单元321和帧间预测单元322。
帧内估计单元321可执行帧内预测以产生PU的预测块。帧内估计单元321可使用帧内预测模式以基于空间相邻PU的像素块来产生PU的预测块。帧内估计单元321还可根据从码流解析的一个或多个语法元素来确定PU的帧内预测模式。
帧间预测单元322可根据从码流解析的语法元素来构造第一参考图像列表(列表0)及第二参考图像列表(列表1)。此外,如果PU使用帧间预测编码,则熵解码单元310可解析PU的运动信息。帧间预测单元322可根据PU的运动信息来确定PU的一个或多个参考块。帧间预测单元322可根据PU的一个或多个参考块来产生PU的预测块。
反量化/变换单元330可逆量化(即,解量化)与TU相关联的变换系数。反量化/变换单元330可使用与TU的CU相关联的QP值来确定量化程度。
在逆量化变换系数之后,反量化/变换单元330可将一个或多个逆变换应用于逆量化变换系数,以便产生与TU相关联的残差块。
重建单元340使用与CU的TU相关联的残差块及CU的PU的预测块以重建CU的像素块。例如,重建单元340可将残差块的采样加到预测块的对应采样以重建CU的像素块,得到重建待编码块。
环路滤波单元350可执行消块滤波操作以减少与CU相关联的像素块的块效应。
在一些实施例中,环路滤波单元350包括去块滤波单元、样点自适应补偿SAO单元、自适应环路滤波ALF单元。
视频解码器300可将CU的重建图像存储于解码图像缓存360中。视频解码器300可将解码图像缓存360中的重建图像作为参考图像用于后续预测,或者,将重建图像传输给显示装置呈现。
本申请涉及的视频解码的基本流程如下:熵解码单元310可解析码流得到当前块的预测信息、量化系数矩阵等,预测单元320基于预测信息对当前块使用帧内预测或帧间预测产生当前块的预测块。反量化/变换单元330使用从码流得到的量化系数矩阵,对量化系数矩阵进行反量化、反变换得到残差块。重建单元340将预测块和残差块相加得到重建块。重建块组成重建图像,环路滤波单元350基于图像或基于块对重建图像进行环路滤波,得到解码图像。该解码图像也可以称为重建图像,该重建图像一方面可以被显示设备进行显示,另一方面可以存放在解码图像缓存360中,为后续的帧作为帧间预测的参考帧。
上述是基于块的混合编码框架下的视频编解码器的基本流程,随着技术的发展,该框架或流程的一些模块或步骤可能会被优化,本申请适用于该基于块的混合编码框架下的视频编解码器的基本流程,但不限于该框架及流程。
实时视频流播放应用:即视频帧数据的接收与数据的本地处理(解码、颜色转换等)和渲染同时进行,且要求视频帧内容从发送到本地渲染播放的延时用户难以察觉的一类应用,例如云游戏、视频通话、游戏直播等。如上所述,实时视频流播放应用,例如云游戏、视频直播、视频会议等,往往会要求视频帧内容从服务器端发出到客户端本地播放间的延时低于用户可察觉的延时。而客户端的解码时间较长是导致该时延较高的主要原因,而客户端的解码器的工作效率与送帧间隔有关,当送帧间隔过大时,解码器的工作频率会下降,解码一个视频帧会消耗其在高工作频率下解码一个视频帧耗时的数倍。
相关技术中提出在客户端侧复制其收到的视频帧,并进行连续送帧解码,使客户端的解码器维持在较高的工作频率并保持较高的解码性能。由于在客户端对码流进行解码时,视频帧之间具有依赖性,即每一个视频帧的解码需要依赖参考帧。通常解码器在解码完一个视频帧之后,会留存一份在它的用于缓存参考帧的参考帧缓存(即图3中的解码图像缓存)中,供后面依赖它的视频帧解码时参考。然而,有的客户端其参考帧缓存有限,使得当采用复制视频帧的方式时,连续送入相同帧解码会使得参考帧缓存中的其他参考帧被覆盖,导致后面依赖这些其他参考帧的视频帧无法正常解码,进而导致后续的视频帧均无法正常解码。
例如,假设视频帧序列是:视频帧1、视频帧2、视频帧3……,客户端对每个原始视频帧复制一份,并将复制帧插入对应的原始视频帧之后,得到的视频帧序列是视频帧1、视频帧1(复制帧)、视频帧2、视频帧2(复制帧)、视频帧3、视频帧3(复制帧)……,假设视频帧1是I帧,即采用帧内预测的视频帧,从视频帧2开始的每一视频帧均是P帧,且每个P帧的参考帧是其前一帧,并且假设参考帧缓存目前只能存储一个参考帧,基于此,当客户端对视频帧1解码之后,将其存储至参考帧缓存中,再对视频帧1的复制帧解码,并将之前参考帧缓存中存储的视频帧1删除,将解码后的视频帧1的复制帧存储至参考帧缓存中。进一步地,客户端将视频帧1的复制帧作为视频帧2的参考帧对视频帧2进行解码,并将之前参考帧缓存中存储的视频帧1的复制帧删除,将解码后的视频帧2存储至参考帧缓存中。更进一步地,由于视频帧2的复制帧其参考帧是视频帧1,但是参考帧缓存中当前未存储视频帧1,导致视频帧2的复制帧无法被正确解码,即会存在一个错误解码帧,这是客户端仍然将之前参考帧缓存中存储的视频帧2删除,将该错误解码帧存储至参考帧缓存中。由于视频帧3的参考帧是视频帧2,但是参考帧缓存中当前存储的是错误解码帧,导致视频帧3无法被正确解码,以此类推,导致后续的视频帧均无法被正确解码,最终影响了正常的视频渲染和显示,降低了用户体验感。
为了降低视频帧内容从服务器端发出到客户端本地播放间的延时,同时克服相关技术存在的上述技术问题,本申请实施例提出在编码端构建原始帧的重复帧,并将这些重复帧与对应的原始帧作为不同视频帧进行编码,换句话讲,最终形成的视频帧序列中的所有视频帧,编码端均将它们作为不同的视频帧进行编码,那么这些视频帧的参考关系或者说它们的参考帧可以不同,比如每个P帧均参考其前一帧,基于此,对于客户端来讲,如果其参考帧缓存有限,也不会存在某一视频帧在参考帧缓存中无法找到对应的参考帧,从而可以保证各个视频帧都可以被正确解码,进而保证正常的视频渲染和显示,提高了用户体验感。从客户端的角度看,只是码流帧率变高了。
应理解的是,本申请技术方案可以应用于实时通信(Real-time Communications,RTC)场景,但不限于此,其中,视频会议、视频通话、远程办公、远程医疗、视频直播、云游戏等均是典型的RTC场景。
云游戏(Cloud gaming)又可称为游戏点播(gaming on demand),是一种以云计算技术为基础的在线游戏技术。云游戏技术使图形处理与数据运算能力相对有限的轻端设备(thin client)能运行高品质游戏。在云游戏场景下,游戏并不在玩家游戏终端,而是在云服务器中运行,并由云服务器将游戏场景渲染为视频音频流,通过网络传输给玩家游戏终端。玩家游戏终端无需拥有强大的图形运算与数据处理能力,仅需拥有基本的流媒体播放能力与获取玩家输入指令并发送给云服务器的能力即可。
下面将对本申请技术方案进行详细阐述:
图4为本申请实施例提供的一种视频处理方法的交互流程图,该方法可以由服务器和客户端执行,该服务器作为视频编码端,它可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。该客户端作为视频解码端,它可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表、虚拟现实(Virtual Reality,VR)设备、增强现实(Augmented Reality,AR)设备、玩家游戏终端,如掌上游戏主机等等,但并不局限于此。如图4所示,该方法可以包括:
S410:服务器获取原始视频的第一视频帧序列;
可选的,服务器可以从视频源获取原始视频,该视频源可包含视频采集装置(例如,视频相机)、视频存档、视频输入接口、计算机图形系统中的至少一个,其中,视频输入接口用于从视频内容提供者处接收视频数据,计算机图形系统用于产生视频数据。
应理解的是,该原始视频可以是各种RTC场景下的视频,例如其可以是云游戏视频、会议视频、通话视频、远程办公视频、远程医疗视频、直播视频等等。
应理解的是,第一视频帧序列是原始视频中全部视频帧按照视频帧的产生顺序依次形成的视频帧序列。
S420:服务器生成第一视频帧序列中的N个视频帧各自的重复帧,N为正整数;
可选的,在执行S420之前,服务器可以判断终端设备的解码器的工作频率与服务器的送帧频率或送帧间隔是否有关,并且原始视频的原始帧率是否小于或等于第三预设帧率,若终端设备的解码器的工作频率与服务器的送帧频率或送帧间隔有关,且原始视频的原始帧率小于或等于第三预设帧率,则服务器执行S420。
可选的,服务器可以获取终端设备的型号,基于该型号判断终端设备的解码器的工作频率与服务器的送帧频率或送帧间隔是否有关。其中,服务器可以以查表的方式查找终端设备的解码器的工作频率与服务器的送帧频率或送帧间隔是否有关,该表中存储终端设备的型号以及该型号的终端设备的解码器的工作频率与服务器的送帧频率或送帧间隔是否有关的信息。
可选的,第三预设帧率的取值可以是70fps或者75fps等,本申请实施例对此不做限制。
可选的,N个视频帧为第一视频帧序列中的全部或者部分视频帧。
下面对N个视频帧是部分视频帧的情况进行示例性说明,但不限于此:
例如,N个视频帧是第一视频帧序列中索引为奇数的视频帧,或者是索引为偶数的视频帧,又或者是在第一视频帧序列中,先选择第一个视频帧,再从第一个视频帧开始每间隔M个视频帧选择一个视频帧,选择的这些视频帧即为上述N个视频帧,其中,M为正整数,再或者是第一视频帧序列中的前N个视频帧。
可选的,N个视频帧可以是在服务器和客户端两端预定义的,或者是服务器和客户端协商的,又或者是服务器指示给客户端的,再或者是是客户端指示给服务器的,本申请实施例对N个视频帧的确定方法不做限制。
可选的,S420可以包括:
S420-1:服务器确定N个视频帧各自的重复帧的数量;
S420-2:服务器基于N个视频帧各自的重复帧的数量生成N个视频帧各自的重复帧。
可选的,N个视频帧各自的重复帧的数量可以相同,例如,假设N个视频帧分别是视频帧1、视频帧2、视频帧3……视频帧N,它们各自的重复帧的数量是2。
可选的,N个视频帧各自的重复帧的数量可以不完全相同,例如,假设N个视频帧分别是视频帧1、视频帧2、视频帧3……视频帧N,其中,视频帧1的重复帧的数量是2,视频帧2至视频帧N的重复帧的数量均是1。
在一种可实现方式中,N个视频帧各自的重复帧的数量可以是默认的,例如,默认N个视频帧各自的重复帧的数量均是2。
在另一种可实现方式中,S420-1可以包括:
S420-1-1:服务器确定原始视频的原始帧率;
S420-1-2:服务器基于原始帧率确定N个视频帧各自的重复帧的数量。
应理解的是,所谓帧率指的是每秒传输帧数,比如,帧率为80每秒传输帧数(FramePer Second,FPS)指的是每秒传输80帧。而原始视频的原始帧率指的是在插入重复帧之前原始视频的帧率。
其中,S420-1-2可以通过以下任一种可实现方式实现,但不限于此:
在一种可实现方式中,服务器确定基于多个预设帧率所划分的多个帧率区间;确定多个帧率区间与多个重复帧数量之间的映射关系;确定原始帧率所属的帧率区间;基于原始帧率所属的帧率区间和映射关系确定N个视频帧各自的重复帧的数量。
可选的,若原始帧率小于第一预设帧率,则确定N个视频帧各自的重复帧的数量为M1;若原始帧率大于或等于第一预设帧率且小于第二预设帧率,则确定N个视频帧各自的重复帧的数量为M2;若原始帧率大于或等于第二预设帧率且小于或等于第三预设帧率,则确定N个视频帧各自的重复帧的数量为M3;其中,第一预设帧率小于第二预设帧率,第二预设帧率小于第三预设帧率;M1>M2>M3,且M1、M2和M3均为正整数。
在该可实现方式中,原始帧率越小,则待插入的重复帧的数量越大,原始帧率越大,则待插入的重复帧的数量越小。
例如,假设原始视频的原始帧率为k,当k小于或等于75fps时,每个原始视频帧之后都插入一定量的重复帧。具体地,当k小于35fps时,每个原始视频帧后面插入三个重复帧;当k大于等于35fps小于50fps时,每个原始视频帧后面插入两个重复帧;当k大于等于50fps且小于等于75fps时,每个原始视频帧后入插入一个重复帧。图5为原始帧率为60fps时重复帧的插入情况示意图,如图5所示,在原始帧率为60fps时,每个原始视频帧后面插入了一个重复帧,其中,视频帧中的字母A、B、C表示视频帧中的内容,视频帧下方的数字表示视频帧的索引。
在另一种可实现方式中,服务器基于原始帧率和目标帧率确定N个视频帧各自的重复帧的数量。
应理解的是,该目标帧率指的是第一视频帧序列插入重复帧之后,所形成的第二视频帧序列的帧率。
可选的,该目标帧率的取值可以是90fps,95fps等等。
可选的,服务器可以基于如下公式确定N个视频帧各自的重复帧的数量:
FPS1+N*x=FPS2
其中,FPS1表示原始帧率,N表示N个视频帧的数量,x表示N个视频帧各自的重复帧的数量,FPS2表示目标帧率,其中,当x取值为小数时,可以其进行向下取整或者向上取整,得到最终的重复帧数量。
例如,假设FPS1=60fps,FPS2=90fps,N=10,那么x=3,也就是说,服务器可以在10个视频帧之后均插入各自的三个重复帧。
例如,假设FPS1=60fps,FPS2=95fps,N=10,那么x=3.5,对其进行向下取整,最终服务器可以在10个视频帧之后均插入各自的三个重复帧。
例如,假设FPS1=60fps,FPS2=95fps,N=10,那么x=3.5,对其进行向上取整,最终服务器可以在10个视频帧之后均插入各自的四个重复帧。
可选的,每个原始视频帧与其对应的重复帧内容相同,但是参考关系不同,即原始视频帧与其重复帧的参考帧不同,如果一个原始视频帧存在多个重复帧时,这些重复帧的参考关系也不同。
例如,假设第一视频帧序列包括:视频帧1、视频帧2、视频帧3……,其中,视频帧1是I帧,即帧内预测帧,从视频帧2开始的每一视频帧均是P帧,且每个P帧的参考帧是其前一帧。这些视频帧之后均插入了两个重复帧,插入重复帧之后形成的第二视频帧序列包括:视频帧1、视频帧2、视频帧3、视频帧4、视频帧5、视频帧6、视频帧7、视频帧8、视频帧9……,其中,第二视频帧序列中的视频帧1、视频帧4和视频帧7均是原始视频帧1、2、3,第二视频帧序列中的视频帧2、视频帧3是原始视频帧1的重复帧,第二视频帧序列中的视频帧5、视频帧6是原始视频帧2的重复帧,第二视频帧序列中的视频帧8、视频帧9是原始视频帧3的重复帧,其中,插入的这些重复帧也均是P帧,第二视频帧序列中的所有P帧的参考帧是各自的前一帧,比如,第二视频帧序列中的视频帧1是I帧,视频帧2是P帧,其参考帧是视频帧1,视频帧3是P帧,其参考帧是视频帧2,视频帧4是P帧,其参考帧是视频帧3,视频帧5是P帧,其参考帧是视频帧4,视频帧6是P帧,其参考帧是视频帧5,视频帧7是P帧,其参考帧是视频帧6,视频帧8是P帧,其参考帧是视频帧7,视频帧9是P帧,其参考帧是视频帧8,以此类推。
在执行完S420之后,服务器可以执行S430:
S430:服务器将N个视频帧各自的重复帧插入N个视频帧各自之后,以生成第二视频帧序列,其中,N个视频帧各自的参考帧不同于N个视频帧各自的重复帧的参考帧;
应理解的是,N个视频帧中每个视频帧的重复帧会被插入至该视频帧之后。
例如,假设第一视频帧序列包括:视频帧1、视频帧2、视频帧3……,这些视频帧之后均插入了两个重复帧,插入重复帧之后形成的第二视频帧序列包括:视频帧1、视频帧2、视频帧3、视频帧4、视频帧5、视频帧6、视频帧7、视频帧8、视频帧9……,其中,第二视频帧序列中的视频帧1、视频帧4和视频帧7均是原始视频帧1、2、3,第二视频帧序列中的视频帧2、视频帧3是原始视频帧1的重复帧,第二视频帧序列中的视频帧5、视频帧6是原始视频帧2的重复帧,第二视频帧序列中的视频帧8、视频帧9是原始视频帧3的重复帧。
S440:服务器将N个视频帧各自的重复帧作为与N个视频帧各自不同的视频帧,以对第二视频帧序列进行编码,得到码流;
应理解的是,服务器将N个视频帧各自的重复帧作为与N个视频帧各自不同的视频帧,以对第二视频帧序列进行编码,表示这些重复帧至少内容上与其对应的原始视频帧的内容相同,但是参考关系不同。
S450:服务器输出码流;
S460:客户端解析码流,以得到第二视频帧序列;
应理解的是,客户端作为解码端,其可以按照上述介绍的解码过程,解码得到每个视频帧,这些视频帧构成第二视频帧序列。
S470:客户端对第二视频帧序列进行视频帧渲染。
在一种可实现方式中,客户端对第二视频帧序列中的每个视频帧进行视频帧渲染。
在另一种可实现方式中,S470可以包括:
S470-1:客户端确定N个视频帧各自的重复帧;
S470-2:客户端对第二视频帧序列中除N个视频帧各自的重复帧以外的视频帧进行视频帧渲染。
应理解的是,在可实现方式中,客户端可以丢弃重复帧,只对原始帧进行视频帧渲染。
在一种可实现方式中,在执行S470-1之前,客户端可以判断终端设备的解码器的工作频率与服务器的送帧频率或送帧间隔是否有关,并且原始视频的原始帧率是否小于或等于第三预设帧率,若终端设备的解码器的工作频率与服务器的送帧频率或送帧间隔有关,且原始视频的原始帧率小于或等于第三预设帧率,则客户端执行S470-1。换句话讲,客户端与服务器采用同样的判断准则来判断是否原始视频中插入了重复帧,如果客户端确定原始视频中插入了重复帧,再执行S470-1。
可选的,客户端可以获取终端设备的型号,基于该型号判断终端设备的解码器的工作频率与服务器的送帧频率或送帧间隔是否有关。其中,客户端可以以查表的方式查找终端设备的解码器的工作频率与服务器的送帧频率或送帧间隔是否有关,该表中存储终端设备的型号以及该型号的终端设备的解码器的工作频率与服务器的送帧频率或送帧间隔是否有关的信息。
可选的,第三预设帧率的取值可以是70fps或者75fps等,本申请实施例对此不做限制。
在另一种可实现方式中,在执行S470-1之前,客户端可以接收服务器发送的第一指示信息,该第一指示信息用于指示原始视频插入了重复帧,基于此,客户端再执行S470-1。
S470-1可以通过任一种可实现方式实现,但不限于此:
可实现方式一,客户端接收服务器发送的第二指示信息,该第二指示信息用于指示重复帧的索引。
可选的,该第二指示信息与上述第一指示信息可以是同一指示信息,也可以是不同的指示信息,本申请实施例对此不做限制。
可实现方式二,S470-1可以包括:
S470-1-1:客户端确定N个视频帧各自的重复帧的数量;
S470-1-2:客户端基于N个视频帧各自的重复帧的数量确定N个视频帧各自的重复帧。
其中,S470-1-1可以通过以下任一种可实现方式实现,但不限于此:
在一种可实现方式中,客户端接收服务器发送的第三指示信息,该第三指示信息用于指示N个视频帧各自的重复帧的数量。
可选的,该第三指示信息与上述第一指示信息可以是同一指示信息,也可以是不同的指示信息,该第三指示信息与上述第二指示信息可以是同一指示信息,也可以是不同的指示信息,本申请实施例对此不做限制。
在另一种可实现方式中,N个视频帧各自的重复帧的数量可以是默认的,例如,默认N个视频帧各自的重复帧的数量均是2。
在再一种可实现方式中,S470-1-1可以包括:
S470-1-1-1:客户端确定原始视频的原始帧率;
S470-1-1-2:客户端基于原始帧率确定N个视频帧各自的重复帧的数量。
应理解的是,关于帧率和原始帧率的解释说明可以参考上文,在此不再赘述。
其中,S470-1-1-2可以通过以下任一种可实现方式实现,但不限于此:
在一种可实现方式中,客户端确定基于多个预设帧率所划分的多个帧率区间;确定多个帧率区间与多个重复帧数量之间的映射关系;确定原始帧率所属的帧率区间;基于原始帧率所属的帧率区间和映射关系确定N个视频帧各自的重复帧的数量。
可选的,若原始帧率小于第一预设帧率,则确定N个视频帧各自的重复帧的数量为M1;若原始帧率大于或等于第一预设帧率且小于第二预设帧率,则确定N个视频帧各自的重复帧的数量为M2;若原始帧率大于或等于第二预设帧率且小于或等于第三预设帧率,则确定N个视频帧各自的重复帧的数量为M3;其中,第一预设帧率小于第二预设帧率,第二预设帧率小于第三预设帧率;M1>M2>M3,且M1、M2和M3均为正整数。
在该可实现方式中,原始帧率越小,则待插入的重复帧的数量越大,原始帧率越大,则待插入的重复帧的数量越小。
例如,假设原始视频的原始帧率为k,当k小于或等于75fps时,每个原始视频帧之后都插入一定量的重复帧。具体地,当k小于35fps时,每个原始视频帧后面插入三个重复帧;当k大于等于35fps小于50fps时,每个原始视频帧后面插入两个重复帧;当k大于等于50fps且小于等于75fps时,每个原始视频帧后入插入一个重复帧。
在另一种可实现方式中,客户端基于原始帧率和目标帧率确定N个视频帧各自的重复帧的数量。
应理解的是,该目标帧率指的是第一视频帧序列插入重复帧之后,所形成的第二视频帧序列的帧率。
可选的,该目标帧率的取值可以是90fps,95fps等等。
可选的,客户端可以基于如下公式确定N个视频帧各自的重复帧的数量:
FPS1+N*x=FPS2
其中,FPS1表示原始帧率,N表示N个视频帧的数量,x表示N个视频帧各自的重复帧的数量,FPS2表示目标帧率,其中,当x取值为小数时,可以其进行向下取整或者向上取整,得到最终的重复帧数量。
例如,假设FPS1=60fps,FPS2=90fps,N=10,那么x=3,也就是说,客户端确定在10个视频帧之后插入了各自的三个重复帧。
例如,假设FPS1=60fps,FPS2=95fps,N=10,那么x=3.5,对其进行向下取整,最终客户端确定可以在10个视频帧之后插入了各自的三个重复帧。
例如,假设FPS1=60fps,FPS2=95fps,N=10,那么x=3.5,对其进行向上取整,最终客户端确定可以在10个视频帧之后插入了各自的四个重复帧。
需要说明的是,客户端与服务器采用同样的准则来确定N个重复帧之后之后的重复帧的数量。
本申请实施例提供一种视频处理方法,包括:服务器获取原始视频的第一视频帧序列;生成第一视频帧序列中的N个视频帧各自的重复帧;将N个视频帧各自的重复帧插入N个视频帧各自之后,以生成第二视频帧序列;将N个视频帧各自的重复帧作为与N个视频帧各自不同的视频帧,以对第二视频帧序列进行编码,得到并输出码流;客户端解析码流,以得到第二视频帧序列;客户端对第二视频帧序列进行视频帧渲染。由于服务器将第二视频帧序列中的各个视频帧作为不同的视频帧进行编码,那么这些视频帧的参考关系不同,比如每个P帧均参考其前一帧,基于此,对于客户端来讲,如果其参考帧缓存有限,也不会存在某一视频帧在参考帧缓存中无法找到对应的参考帧。
例如,假设第一视频帧序列包括:视频帧1、视频帧2、视频帧3……,其中,视频帧1是I帧,从视频帧2开始的每一视频帧均是P帧,且每个P帧的参考帧是其前一帧。这些视频帧之后均插入了两个重复帧,插入重复帧之后形成的第二视频帧序列包括:视频帧1、视频帧2、视频帧3、视频帧4、视频帧5、视频帧6、视频帧7、视频帧8、视频帧9……,其中,第二视频帧序列中的视频帧1、视频帧4和视频帧7均是原始视频帧1、2、3,第二视频帧序列中的视频帧2、视频帧3是原始视频帧1的重复帧,第二视频帧序列中的视频帧5、视频帧6是原始视频帧2的重复帧,第二视频帧序列中的视频帧8、视频帧9是原始视频帧3的重复帧,其中,插入的这些重复帧也均是P帧,第二视频帧序列中的所有P帧的参考帧是各自的前一帧,比如,第二视频帧序列中的视频帧1是I帧,视频帧2是P帧,其参考帧是视频帧1,视频帧3是P帧,其参考帧是视频帧2,视频帧4是P帧,其参考帧是视频帧3,视频帧5是P帧,其参考帧是视频帧4,视频帧6是P帧,其参考帧是视频帧5,视频帧7是P帧,其参考帧是视频帧6,视频帧8是P帧,其参考帧是视频帧7,视频帧9是P帧,其参考帧是视频帧8,以此类推。那么假设参考帧缓存只能存储一个参考帧,由于第二视频帧序列中的每个P帧都是参考其前一帧,而其前一帧被存储在参考帧缓存中,使得第二视频帧序列中的各个视频帧都可以被正确解码,进而保证正常的视频渲染和显示,提高了用户体验感。从客户端的角度看,只是码流帧率变高了而已。并且通过这种方式降低了视频帧间隔,以提高客户端的工作频率,进而可以降低视频帧内容从服务器端发出到客户端本地播放间的延时。
进一步地,客户端在进行视频帧渲染时,其可以丢弃重复帧,一方面使得用户不会发觉帧率变化,不影响视频效果,进一步地提高了用户体验感。另一方面通过这种丢弃重复帧的方式不会额外带来额外的渲染耗时。
以上结合附图详细描述了本申请的优选实施方式,但是,本申请并不限于上述实施方式中的具体细节,在本申请的技术构思范围内,可以对本申请的技术方案进行多种简单变型,这些简单变型均属于本申请的保护范围。例如,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本申请对各种可能的组合方式不再另行说明。又例如,本申请的各种不同的实施方式之间也可以进行任意组合,只要其不违背本申请的思想,其同样应当视为本申请所公开的内容。
还应理解,在本申请的各种方法实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
上文对本申请实施例提供的方法进行了说明,下面对本申请实施例提供的装置进行说明。
图6为本申请实施例提供的一种服务器600的示意图,如图6所示,该服务器600包括:获取模块610、第一生成模块620、第二生成模块630、编码模块640和输出模块650,获取模块610用于获取原始视频的第一视频帧序列;第一生成模块620用于生成所述第一视频帧序列中的N个视频帧各自的重复帧,N为正整数;第二生成模块630用于将所述N个视频帧各自的重复帧插入所述N个视频帧各自之后,以生成第二视频帧序列,其中,N个视频帧各自的参考帧不同于N个视频帧各自的重复帧的参考帧;编码模块640用于将所述N个视频帧各自的重复帧作为与所述N个视频帧各自不同的视频帧,以对所述第二视频帧序列进行编码,得到码流;输出模块650用于输出所述码流。
可选的,第一生成模块620具体用于:确定N个视频帧各自的重复帧的数量;基于N个视频帧各自的重复帧的数量生成N个视频帧各自的重复帧。
可选的,第一生成模块620具体用于:确定原始视频的原始帧率;基于原始帧率确定N个视频帧各自的重复帧的数量。
可选的,第一生成模块620还用于:确定基于多个预设帧率所划分的多个帧率区间;确定多个帧率区间与多个重复帧数量之间的映射关系;相应的,第一生成模块620具体用于:确定原始帧率所属的帧率区间;基于原始帧率所属的帧率区间和映射关系确定N个视频帧各自的重复帧的数量。
可选的,第一生成模块620具体用于:若原始帧率小于第一预设帧率,则基于原始帧率所属的帧率区间和映射关系确定N个视频帧各自的重复帧的数量为M1;若原始帧率大于或等于第一预设帧率且小于第二预设帧率,则基于原始帧率所属的帧率区间和映射关系确定N个视频帧各自的重复帧的数量为M2;若原始帧率大于或等于第二预设帧率且小于或等于第三预设帧率,则基于原始帧率所属的帧率区间和映射关系确定N个视频帧各自的重复帧的数量为M3;其中,第一预设帧率小于第二预设帧率,第二预设帧率小于第三预设帧率;M1>M2>M3,且M1、M2和M3均为正整数。
可选的,第一生成模块620具体用于:若终端设备的解码器的工作频率与服务器的送帧频率或送帧间隔有关,且原始视频的原始帧率小于或等于第三预设帧率,则生成N个视频帧各自的重复帧。
可选的,N个视频帧为第一视频帧序列中的全部或者部分视频帧。
应理解的是,装置实施例与方法实施例可以相互对应,类似的描述可以参照方法实施例。为避免重复,此处不再赘述。具体地,图6所示的装置600可以执行图4对应的方法实施例中服务器的相应流程,并且装置600中的各个模块的前述和其它操作和/或功能分别为了实现图4中的各个方法中服务器对应的相应流程,为了简洁,在此不再赘述。
上文中结合附图从功能模块的角度描述了本申请实施例的装置600。应理解,该功能模块可以通过硬件形式实现,也可以通过软件形式的指令实现,还可以通过硬件和软件模块组合实现。具体地,本申请实施例中的方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路和/或软件形式的指令完成,结合本申请实施例公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。可选地,软件模块可以位于随机存储器,闪存、只读存储器、可编程只读存储器、电可擦写可编程存储器、寄存器等本领域的成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法实施例中的步骤。
图7为本申请实施例提供的一种客户端700的示意图,如图7所示,该客户端700包括:获取模块710、解析模块720和渲染模块730,获取模块710用于获取码流;解析模块720用于解析码流,以得到第二视频帧序列;渲染模块730用于对第二视频帧序列进行视频帧渲染;其中,第二视频帧序列是对原始视频的第一视频帧序列中N个视频帧插入各自的重复帧之后得到的视频帧序列,N为正整数,N个视频帧各自的参考帧不同于N个视频帧各自的重复帧的参考帧。
可选的,渲染模块730具体用于:确定N个视频帧各自的重复帧;对第二视频帧序列中除N个视频帧各自的重复帧以外的视频帧进行视频帧渲染。
可选的,渲染模块730具体用于:确定N个视频帧各自的重复帧的数量;基于N个视频帧各自的重复帧的数量确定N个视频帧各自的重复帧。
可选的,渲染模块730具体用于:确定原始视频的原始帧率;基于原始帧率确定N个视频帧各自的重复帧的数量。
可选的,渲染模块730还用于:确定基于多个预设帧率所划分的多个帧率区间;确定多个帧率区间与多个重复帧数量之间的映射关系;相应的,渲染模块730具体用于:确定原始帧率所属的帧率区间;基于原始帧率所属的帧率区间和映射关系确定N个视频帧各自的重复帧的数量。
可选的,渲染模块730具体用于:若原始帧率小于第一预设帧率,则基于原始帧率所属的帧率区间和映射关系确定N个视频帧各自的重复帧的数量为M1;若原始帧率大于或等于第一预设帧率且小于第二预设帧率,则基于原始帧率所属的帧率区间和映射关系确定N个视频帧各自的重复帧的数量为M2;若原始帧率大于或等于第二预设帧率且小于或等于第三预设帧率,则基于原始帧率所属的帧率区间和映射关系确定N个视频帧各自的重复帧的数量为M3;其中,第一预设帧率小于第二预设帧率,第二预设帧率小于第三预设帧率,M1>M2>M3,且M1、M2和M3均为正整数。
可选的,渲染模块730具体用于:若客户端的解码器的工作频率与服务器的送帧频率或送帧间隔有关,且的原始帧率小于或等于第三预设帧率,则确定N个视频帧各自的重复帧。
可选的,N个视频帧为第一视频帧序列中的全部或者部分视频帧。
应理解的是,装置实施例与方法实施例可以相互对应,类似的描述可以参照方法实施例。为避免重复,此处不再赘述。具体地,图6所示的装置600可以执行图4对应的方法实施例中客户端的相应流程,并且装置600中的各个模块的前述和其它操作和/或功能分别为了实现图4中的各个方法中客户端对应的相应流程,为了简洁,在此不再赘述。
上文中结合附图从功能模块的角度描述了本申请实施例的装置600。应理解,该功能模块可以通过硬件形式实现,也可以通过软件形式的指令实现,还可以通过硬件和软件模块组合实现。具体地,本申请实施例中的方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路和/或软件形式的指令完成,结合本申请实施例公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。可选地,软件模块可以位于随机存储器,闪存、只读存储器、可编程只读存储器、电可擦写可编程存储器、寄存器等本领域的成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法实施例中的步骤。
图8是本申请实施例提供的电子设备的示意性框图。该电子设备可以是上述服务器或者客户端。
如图8所示,该电子设备可包括:
存储器810和处理器820,该存储器810用于存储计算机程序,并将该程序代码传输给该处理器820。换言之,该处理器820可以从存储器810中调用并运行计算机程序,以实现本申请实施例中的方法。
例如,该处理器820可用于根据该计算机程序中的指令执行上述方法实施例。
在本申请的一些实施例中,该处理器820可以包括但不限于:
通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等等。
在本申请的一些实施例中,该存储器810包括但不限于:
易失性存储器和/或非易失性存储器。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double DataRate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synch link DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DR RAM)。
在本申请的一些实施例中,该计算机程序可以被分割成一个或多个模块,该一个或者多个模块被存储在该存储器810中,并由该处理器820执行,以完成本申请提供的方法。该一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述该计算机程序在该电子设备中的执行过程。
如图8所示,该电子设备还可包括:
收发器830,该收发器830可连接至该处理器820或存储器810。
其中,处理器820可以控制该收发器830与其他设备进行通信,具体地,可以向其他设备发送信息或数据,或接收其他设备发送的信息或数据。收发器830可以包括发射机和接收机。收发器830还可以进一步包括天线,天线的数量可以为一个或多个。
应当理解,该电子设备中的各个组件通过总线系统相连,其中,总线系统除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。
本申请还提供了一种计算机存储介质,其上存储有计算机程序,该计算机程序被计算机执行时使得该计算机能够执行上述方法实施例的方法。或者说,本申请实施例还提供一种包含指令的计算机程序产品,该指令被计算机执行时使得计算机执行上述方法实施例的方法。
当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本申请实施例该的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,该计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如数字视频光盘(digital video disc,DVD))、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的模块及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。例如,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。
以上该,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以该权利要求的保护范围为准。
Claims (17)
1.一种视频处理方法,其特征在于,所述方法应用于服务器,所述方法包括:
获取原始视频的第一视频帧序列;
生成所述第一视频帧序列中的N个视频帧各自的重复帧,N为正整数;
将所述N个视频帧各自的重复帧插入所述N个视频帧各自之后,以生成第二视频帧序列,其中,所述N个视频帧各自的参考帧不同于所述N个视频帧各自的重复帧的参考帧;
将所述N个视频帧各自的重复帧作为与所述N个视频帧各自不同的视频帧,以对所述第二视频帧序列进行编码,得到码流;
输出所述码流。
2.根据权利要求1所述的方法,其特征在于,所述生成所述第一视频帧序列中的N个视频帧各自的重复帧,包括:
确定所述N个视频帧各自的重复帧的数量;
基于所述N个视频帧各自的重复帧的数量生成所述N个视频帧各自的重复帧。
3.根据权利要求2所述的方法,其特征在于,所述确定所述N个视频帧各自的重复帧的数量,包括:
确定所述原始视频的原始帧率;
基于所述原始帧率确定所述N个视频帧各自的重复帧的数量。
4.根据权利要求3所述的方法,其特征在于,所述基于所述原始帧率确定所述N个视频帧各自的重复帧的数量之前,还包括:
确定基于多个预设帧率所划分的多个帧率区间;
确定所述多个帧率区间与多个重复帧数量之间的映射关系;
所述基于所述原始帧率确定所述N个视频帧各自的重复帧的数量,包括:确定所述原始帧率所属的帧率区间;
基于所述原始帧率所属的帧率区间和所述映射关系确定所述N个视频帧各自的重复帧的数量。
5.根据权利要求4所述的方法,其特征在于,所述基于所述原始帧率所属的帧率区间和所述映射关系确定所述N个视频帧各自的重复帧的数量,包括:
若所述原始帧率小于第一预设帧率,则基于所述原始帧率所属的帧率区间和所述映射关系确定所述N个视频帧各自的重复帧的数量为M1;
若所述原始帧率大于或等于所述第一预设帧率且小于第二预设帧率,则基于所述原始帧率所属的帧率区间和所述映射关系确定所述N个视频帧各自的重复帧的数量为M2;
若所述原始帧率大于或等于所述第二预设帧率且小于或等于第三预设帧率,则基于所述原始帧率所属的帧率区间和所述映射关系确定所述N个视频帧各自的重复帧的数量为M3;
其中,所述第一预设帧率小于第二预设帧率,所述第二预设帧率小于所述第三预设帧率;M1>M2>M3,且M1、M2和M3均为正整数。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述生成所述第一视频帧序列中的N个视频帧各自的重复帧,包括:
若终端设备的解码器的工作频率与所述服务器的送帧频率或送帧间隔有关,且所述原始视频的原始帧率小于或等于第三预设帧率,则生成所述N个视频帧各自的重复帧。
7.一种视频处理方法,其特征在于,所述方法应用于客户端,所述方法包括:
获取码流;
解析所述码流,以得到第二视频帧序列;
对所述第二视频帧序列进行视频帧渲染;
其中,所述第二视频帧序列是对原始视频的第一视频帧序列中N个视频帧插入各自的重复帧之后得到的视频帧序列,N为正整数,所述N个视频帧各自的参考帧不同于所述N个视频帧各自的重复帧的参考帧。
8.根据权利要求7所述的方法,其特征在于,所述对所述第二视频帧序列进行视频帧渲染,包括:
确定所述N个视频帧各自的重复帧;
对所述第二视频帧序列中除所述N个视频帧各自的重复帧以外的视频帧进行视频帧渲染。
9.根据权利要求8所述的方法,其特征在于,所述确定所述N个视频帧各自的重复帧,包括:
确定所述N个视频帧各自的重复帧的数量;
基于所述N个视频帧各自的重复帧的数量确定所述N个视频帧各自的重复帧。
10.根据权利要求9所述的方法,其特征在于,所述确定所述N个视频帧各自的重复帧的数量,包括:
确定所述原始视频的原始帧率;
基于所述原始帧率确定所述N个视频帧各自的重复帧的数量。
11.根据权利要求10所述的方法,其特征在于,所述基于所述原始帧率确定所述N个视频帧各自的重复帧的数量之前,还包括:
确定基于多个预设帧率所划分的多个帧率区间;
确定所述多个帧率区间与多个重复帧数量之间的映射关系;
所述基于所述原始帧率确定所述N个视频帧各自的重复帧的数量,包括:确定所述原始帧率所属的帧率区间;
基于所述原始帧率所属的帧率区间和所述映射关系确定所述N个视频帧各自的重复帧的数量。
12.根据权利要求11所述的方法,其特征在于,所述基于所述原始帧率所属的帧率区间和所述映射关系确定所述N个视频帧各自的重复帧的数量,包括:
若所述原始帧率小于第一预设帧率,则基于所述原始帧率所属的帧率区间和所述映射关系确定所述N个视频帧各自的重复帧的数量为M1;
若所述原始帧率大于或等于所述第一预设帧率且小于第二预设帧率,则基于所述原始帧率所属的帧率区间和所述映射关系确定所述N个视频帧各自的重复帧的数量为M2;
若所述原始帧率大于或等于所述第二预设帧率且小于或等于第三预设帧率,则基于所述原始帧率所属的帧率区间和所述映射关系确定所述N个视频帧各自的重复帧的数量为M3;
其中,所述第一预设帧率小于第二预设帧率,所述第二预设帧率小于所述第三预设帧率,M1>M2>M3,且M1、M2和M3均为正整数。
13.根据权利要求8-12任一项所述的方法,其特征在于,所述确定所述N个视频帧各自的重复帧,包括:
若所述客户端的解码器的工作频率与服务器的送帧频率或送帧间隔有关,且所述的原始帧率小于或等于第三预设帧率,则确定所述N个视频帧各自的重复帧。
14.一种服务器,其特征在于,包括:
获取模块,用于获取原始视频的第一视频帧序列;
第一生成模块,用于生成所述第一视频帧序列中的N个视频帧各自的重复帧,N为正整数;
第二生成模块,用于将所述N个视频帧各自的重复帧插入所述N个视频帧各自之后,以生成第二视频帧序列,其中,所述N个视频帧各自的参考帧不同于所述N个视频帧各自的重复帧的参考帧;
编码模块,用于将所述N个视频帧各自的重复帧作为与所述N个视频帧各自不同的视频帧,以对所述第二视频帧序列进行编码,得到码流;
输出模块,用于输出所述码流。
15.一种客户端,其特征在于,包括:
获取模块,用于获取码流;
解析模块,用于解析所述码流,以得到第二视频帧序列;
渲染模块,用于对所述第二视频帧序列进行视频帧渲染;
其中,所述第二视频帧序列是对原始视频的第一视频帧序列中N个视频帧插入各自的重复帧之后得到的视频帧序列,N为正整数,所述N个视频帧各自的参考帧不同于所述N个视频帧各自的重复帧的参考帧。
16.一种电子设备,其特征在于,包括:
处理器和存储器,所述存储器用于存储计算机程序,所述处理器用于调用并运行所述存储器中存储的计算机程序,以执行权利要求1至13中任一项所述的方法。
17.一种计算机可读存储介质,其特征在于,用于存储计算机程序,所述计算机程序使得计算机执行如权利要求1至13中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211485729.3A CN115866297A (zh) | 2022-11-24 | 2022-11-24 | 视频处理方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211485729.3A CN115866297A (zh) | 2022-11-24 | 2022-11-24 | 视频处理方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115866297A true CN115866297A (zh) | 2023-03-28 |
Family
ID=85666137
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211485729.3A Pending CN115866297A (zh) | 2022-11-24 | 2022-11-24 | 视频处理方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115866297A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116523758A (zh) * | 2023-07-03 | 2023-08-01 | 清华大学 | 基于关键帧的端云联合超分辨率视频重建方法及系统 |
-
2022
- 2022-11-24 CN CN202211485729.3A patent/CN115866297A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116523758A (zh) * | 2023-07-03 | 2023-08-01 | 清华大学 | 基于关键帧的端云联合超分辨率视频重建方法及系统 |
CN116523758B (zh) * | 2023-07-03 | 2023-09-19 | 清华大学 | 基于关键帧的端云联合超分辨率视频重建方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11936884B2 (en) | Coded-block-flag coding and derivation | |
US9414086B2 (en) | Partial frame utilization in video codecs | |
CN113840143A (zh) | 编码器、解码器以及使用ibc专用缓冲区的对应方法 | |
WO2017129023A1 (zh) | 解码方法、编码方法、解码设备和编码设备 | |
JP2022524357A (ja) | エンコーダ、デコーダ、及び対応するインター予測方法 | |
CN115668915A (zh) | 图像编码方法、图像解码方法及相关装置 | |
CN113766249A (zh) | 视频编解码中的环路滤波方法、装置、设备及存储介质 | |
JP2022517118A (ja) | 点群コーディングにおける効率的なパッチ回転 | |
JP2023126795A (ja) | ビデオコーディングにおけるクロマイントラ予測のための方法及び装置 | |
CN116074516A (zh) | 一种图像编解码方法及装置 | |
WO2023039859A1 (zh) | 视频编解码方法、设备、系统、及存储介质 | |
US20170164007A1 (en) | Mixed boolean-token ans coefficient coding | |
CN115866297A (zh) | 视频处理方法、装置、设备及存储介质 | |
CN113938679B (zh) | 图像类型的确定方法、装置、设备及存储介质 | |
CN113973210B (zh) | 媒体文件封装方法、装置、设备及存储介质 | |
CN110798705A (zh) | 一种视频图像传输方法、装置及设备 | |
KR20230129068A (ko) | 확장 가능한 인코딩 및 디코딩 방법 및 장치 | |
CN116567256A (zh) | 分层编码方法、装置、设备及存储介质 | |
CN115086664A (zh) | 未匹配像素的解码方法、编码方法、解码器以及编码器 | |
CN115550666A (zh) | 用于视频数据的编码方法、解码方法、计算设备和介质 | |
CN116760976B (zh) | 仿射预测决策方法、装置、设备及存储介质 | |
JP7492027B2 (ja) | Ptl関連情報をシグナリングする画像符号化/復号方法および装置、ならびにビットストリームを記憶したコンピュータ読み取り可能記録媒体 | |
CN110784719B (zh) | 在视频注释的存在下视频数据的高效编码 | |
WO2022174475A1 (zh) | 视频编解码方法与系统、及视频编码器与视频解码器 | |
WO2022155922A1 (zh) | 视频编解码方法与系统、及视频编码器与视频解码器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |