CN114745590A - 视频帧编码方法、装置、电子设备及介质 - Google Patents
视频帧编码方法、装置、电子设备及介质 Download PDFInfo
- Publication number
- CN114745590A CN114745590A CN202110020631.XA CN202110020631A CN114745590A CN 114745590 A CN114745590 A CN 114745590A CN 202110020631 A CN202110020631 A CN 202110020631A CN 114745590 A CN114745590 A CN 114745590A
- Authority
- CN
- China
- Prior art keywords
- frame
- video
- code rate
- coded
- target frame
- 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
- 238000000034 method Methods 0.000 title claims abstract description 172
- 238000013139 quantization Methods 0.000 claims abstract description 156
- 230000009467 reduction Effects 0.000 claims abstract description 91
- 238000012545 processing Methods 0.000 claims abstract description 46
- 230000008859 change Effects 0.000 claims abstract description 41
- 238000001514 detection method Methods 0.000 claims description 44
- 238000013138 pruning Methods 0.000 claims 1
- 230000008569 process Effects 0.000 description 62
- 230000007246 mechanism Effects 0.000 description 25
- 238000010586 diagram Methods 0.000 description 23
- 238000011156 evaluation Methods 0.000 description 23
- 238000012360 testing method Methods 0.000 description 17
- 238000004364 calculation method Methods 0.000 description 13
- 230000000694 effects Effects 0.000 description 13
- 239000011159 matrix material Substances 0.000 description 8
- 230000000903 blocking effect Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 7
- 238000013178 mathematical model Methods 0.000 description 7
- 238000004590 computer program Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000007423 decrease Effects 0.000 description 3
- 238000012549 training Methods 0.000 description 3
- 102100037812 Medium-wave-sensitive opsin 1 Human genes 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000001364 causal effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000012886 linear function Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000013441 quality evaluation Methods 0.000 description 1
- 238000011895 specific detection Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 210000001260 vocal cord Anatomy 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/44—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
- H04N21/44008—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving operations for analysing video streams, e.g. detecting features or characteristics in the video stream
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/124—Quantisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/146—Data rate or code amount at the encoder output
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/44—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
- H04N21/4402—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
- H04N21/440218—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display by transcoding between formats or standards, e.g. from MPEG-2 to MPEG-4
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/44—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
- H04N21/4402—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
- H04N21/440281—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display by altering the temporal resolution, e.g. by frame skipping
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本申请实施例提供了一种视频帧编码方法,涉及视频处理技术领域。所述方法包括:获取待编码视频帧;确定所述待编码视频帧中的目标帧;所述目标帧包括场景切换类型的视频帧;削减所述目标帧的码率;根据预设的流畅度参数以及削减后的剩余码率,调整针对所述目标帧的量化参数;根据所述量化参数,对所述削减视频帧进行编码;将削减的码率分配给除所述目标帧之外的至少一个待编码视频帧。本申请实施例能够在保证视频质量基本不变的情况下,降低峰值带宽、降低卡帧率,使用户体验更好。
Description
技术领域
本申请涉及视频处理技术领域,特别是涉及一种视频帧编码方法、装置、电子设备及介质。
背景技术
随着网络技术的发展,越来越多的用户在互联网中,采用视频的方式行视频交流,比如一对一视频交流,多对多的视频聊天,视频会议、视频直播等。但是在实际应用中,由于网络、设备等原因,会造成视频卡顿,而视频卡顿是影响用户体验的关键问题。视频卡顿,一般是由于视频内容的场景切换导致的,由于视频内容的场景切换之后的前后帧之间的时域没有相关性,后一帧不能再根据前一帧做预测,导致后一帧的码率可能很大。如此,比如在视频会议过程中,特别是视频会议接入人数较多,比如视频会议人数大于一定阈值,该视频内容的场景切换,导致视频帧的码率暴增,从而导致峰值带宽高,使卡顿率较高。
目前,解决视频卡顿的方式,主要就是对码率大于设定阈值的视频帧进行跳帧,对其他帧继续进行处理。
但是,目前的方案中,发明人发现,由于进行简单的跳帧操作,虽然降低了峰值带宽和卡顿率,提高了流畅度,但是由于直接跳过了该视频帧,导致视频质量下降比较大。
发明内容
本申请实施例提供了一种视频帧编码方法,以在尽量保证视频质量的情况下,降低峰值带宽、降低卡顿率。
相应的,本申请实施例还提供了一种视频帧编码装置、电子设备以及存储介质,用以保证上述方法的实现及应用。
为了解决上述问题,本申请实施例公开了一种视频帧编码方法,所述方法包括:
获取待编码视频帧;
确定所述待编码视频帧中的目标帧;所述目标帧包括场景切换类型的视频帧;
削减所述目标帧的码率;
根据预设的流畅度参数以及削减后的剩余码率,调整针对所述目标帧的量化参数;
根据所述量化参数,对所述削减视频帧进行编码;
将削减的码率分配给除所述目标帧之外的至少一个待编码视频帧,并执行确定所述待编码视频帧中的目标帧的步骤。
本申请实施例还公开了一种码率控制方法,所述方法包括:
获取待编码视频帧;
确定所述待编码视频帧中的目标帧;所述目标帧包括场景切换类型的视频帧;
削减所述目标帧的码率;
将削减的码率分配给除所述目标帧之外的至少一个待编码视频帧,并执行确定所述待编码视频帧中的目标帧的步骤。本申请实施例还公开了一种视频帧编码方法,所述方法包括:
获取视频发送端发送的第一视频流,以及获取视频接收端的流畅度参数;
解码所述第一视频流,获取待编码视频帧;
确定所述待编码视频帧中的目标帧;所述目标帧包括场景切换类型的视频帧;
削减所述目标帧的码率;
根据预设的流畅度参数以及削减后的剩余码率,调整针对所述目标帧的量化参数;
根据所述流畅度参数,调整针对所述目标帧的量化参数;
根据所述量化参数,对所述削减视频帧进行编码,并向视频接收端发送编码后的第二视频流;
将削减的码率分配给除所述目标帧之外的至少一个待编码视频帧,并执行确定所述待编码视频帧中的目标帧的步骤。
本申请实施例还公开了一种视频会议数据的处理方法,所述方法包括:
获取视频会议数据中的待编码视频帧;
确定所述待编码视频帧中的目标帧;所述目标帧包括场景切换类型的视频帧;
削减所述目标帧的码率;
将削减的码率分配给除所述目标帧之外的至少一个待编码视频帧,并执行确定所述待编码视频帧中的目标帧的步骤。
本申请实施例还公开了一种视频直播数据的处理方法,所述方法包括:
获取视频直播数据中的待编码视频帧;
确定所述待编码视频帧中的目标帧;所述目标帧包括场景切换类型的视频帧;
削减所述目标帧的码率;
将削减的码率分配给除所述目标帧之外的至少一个待编码视频帧,并执行确定所述待编码视频帧中的目标帧的步骤。
本申请实施例还公开了一种视频帧编码装置,所述装置包括:
第一视频帧获取模块,用于获取待编码视频帧;
第一帧检测模块,用于确定所述待编码视频帧中的目标帧;所述目标帧包括场景切换类型的视频帧;
第一码率削减模块,用于削减所述目标帧的码率;
第一量化参数调整模块,用于根据预设的流畅度参数以及削减后的剩余码率,调整针对所述目标帧的量化参数;
第一编码模块,用于根据所述量化参数,对所述削减视频帧进行编码;
第一码率再分配模块,用于将削减的码率分配给除所述目标帧之外的至少一个待编码视频帧,并进入所述第一帧检测模块。
本申请实施例还公开了一种视频帧编码装置,所述装置包括:
第二视频帧获取模块,用于获取待编码视频帧;
第二帧检测模块,用于确定所述待编码视频帧中的目标帧;所述目标帧包括场景切换类型的视频帧;
第二码率削减模块,用于削减所述目标帧的码率;
第二码率再分配模块,用于将削减的码率分配给除所述目标帧之外的至少一个待编码视频帧,并执行第二帧检测模块。
本申请实施例还公开了一种码率控制装置,所述装置包括:
第三获取模块,用于获取视频发送端发送的第一视频流,以及获取视频接收端的流畅度参数;
解码模块,用于解码所述第一视频流,获取待编码视频帧;
第三帧检测模块,用于确定所述待编码视频帧中的目标帧;所述目标帧包括场景切换类型的视频帧;
第三码率削减模块,用于削减所述目标帧的码率;
第三量化参数调整模块,用于根据预设的流畅度参数以及削减后的剩余码率,调整针对所述目标帧的量化参数;
第三编码模块,用于根据所述量化参数,对所述削减视频帧进行编码,并向视频接收端发送编码后的第二视频流;
第三码率再分配模块,用于将削减的码率分配给除所述目标帧之外的至少一个待编码视频帧,并执行第三帧检测模块。
本申请实施例还公开了一种视频会议数据的处理装置,所述装置包括:
第四获取模块,用于获取视频会议数据中的待编码视频帧;
第四帧检测模块,用于确定所述待编码视频帧中的目标帧;所述目标帧包括场景切换类型的视频帧;
第四码率削减模块,用于削减所述目标帧的码率;
第四码率再分配模块,用于将削减的码率分配给除所述目标帧之外的至少一个待编码视频帧,并执行所述第四帧检测模块。
本申请实施例还公开了一种视频直播数据的处理装置,所述装置包括:
第五获取模块,用于获取视频直播数据中的待编码视频帧;
第五帧检测模块,用于确定所述待编码视频帧中的目标帧;所述目标帧包括场景切换类型的视频帧;
第五码率削减模块,用于削减所述目标帧的码率;
第五码率再分配模块,用于将削减的码率分配给除所述目标帧之外的至少一个待编码视频帧,并执行所述第五帧检测模块。
本申请实施例还公开了一种电子设备,包括:处理器;和存储器,其上存储有可执行代码,当所述可执行代码被执行时,使得所述处理器执行如本申请实施例中一个或多个所述的方法。
本申请实施例还公开了一个或多个机器可读介质,其上存储有可执行代码,当所述可执行代码被执行时,使得处理器执行如本申请实施例中一个或多个所述的方法。
与在先技术相比,本申请实施例包括以下优点:
本申请实施例中,对于一个待编码视频帧,先判断其是否为场景切换类型的视频帧,如果该待编码视频帧是场景切换类型的视频帧,则削减该视频帧的码率,然后将削减的该部分码率分配给其他待编码视频,然后再对下一个待编码视频执行上述过程,如此,由于在视频帧的处理过程中,将本身就是场景切换类型的视频帧,或者被分配了新的码率后成为了场景切换类型的视频帧,都会将上述视频帧的码率削减,分配给其他帧,比如待编码视频中的正常视频帧,如此,把场景切换类型的视频帧的码率减少,把正常视频帧的码率增加,可以尽量保证整体码率变化较小,在现在评估视频质量为测试一段帧序列的评估机制下,本申请实施例的该种方式对于视频质量的评估并不会降低很多,还能避免由于场景切换类型的视频帧的帧率过大,导致峰值带宽需求高的问题,能够在保证视频质量基本不变的情况下,降低峰值带宽、降低卡帧率,使用户体验更好。
附图说明
图1是本申请实施例的一种视频帧编码方法的***架构图;
图2是本申请实施例的另一种视频帧编码方法的***架构图;
图3是本申请的一种视频帧编码方法的步骤流程图;
图4是本申请的另一种视频帧编码方法的步骤流程图;
图5是本申请的另一种视频帧编码方法的步骤流程图;
图6是本申请的另一种视频会议数据的处理方法的步骤流程图;
图7是本申请的另一种视频直播数据的处理方法的步骤流程图;
图8是本申请的一种视频帧编码装置实施例的结构框图;
图9是本申请的另一种视频帧编码装置实施例的结构框图;
图10是本申请的一种视频帧编码装置实施例的结构框图;
图11是本申请的一种视频会议数据的处理装置实施例的结构框图;
图12是本申请的一种视频直播数据的处理装置实施例的结构框图;
图13是本申请一实施例提供的装置的结构示意图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
为了能更好的说明本申请实施例,本申请实施例先对基本的编码原理进行介绍。
在实际使用中,存在大量的编码器和解码器,比如H系列,H263、H264、H265、H266等类型的编码器和解码器,又比如MPEG(Moving Picture Experts Group,动态图像专家组)系列,比如MPEG-2、MPEG-4编码器,当然,还有其他类型的编码器和解码器。虽然有不同的类型的编码器,但是其基本原理都类似。在介绍视频编码基本原理之前,先介绍一下相关技术术语:
I帧:Intra-coded picture(帧内编码图像帧),不参考其他图像帧,只利用本帧的信息进行编码。
P帧:Predictive-codedPicture(预测编码图像帧),利用之前的I帧或P帧,采用运动预测的方式进行帧间预测编码。
B帧:Bidirectionallypredicted picture(双向预测编码图像帧),提供最高的压缩比,它既需要之前的图像帧(I帧或P帧),也需要后来的图像帧(P帧),采用运动预测的方式进行帧间双向预测编码。
IDR帧:Instantaneous Decoding Refresh,即时解码刷新帧,从IDR帧开始,重新算一个新的帧序列开始编码。帧序列中的第一个I帧叫IDR帧。在IDR帧之后的所有帧都不能引用任何IDR帧之前的帧的内容,与此相反,对于普通的I帧来说,位于其之后的B帧和P帧可以引用位于普通I帧之前的I帧。
GOP:Group of picture(图像组),指两个I帧之间的距离。
视频编码基本过程,大致如下:
分组:把几帧图像分为一组(GOP),为防止运动变化,帧数不宜取多。
定义帧:将每组内各帧图像定义为三种类型,即IDR帧(可选)、I帧、B帧(可选)和P帧;
预测帧:以IDR帧或I帧做为基础帧,以I帧预测P帧,再由I帧和P帧预测B帧(可选);
编码:最后将I帧数据与预测的差值信息进行编码。
QP:Quantizer Parameter,量化参数,反映了空间细节压缩情况。值越小,量化越精细,图像质量越高,产生的码流也越长。如QP小,大部分的细节都会被保留;QP增大,一些细节丢失,码率降低,但图像失真加强和质量下降。
码率:编码器每秒编出的数据大小,单位是kbps。
流畅度参数:视频的流畅度,可以设置参数范围为0~100,其中0为流畅度最低,100为流畅度最高。其中,流畅度低则画质相对较好,网络质量差的情况下容易卡顿;流畅度高则画质相对较差,网络质量差的情况则不容易卡顿。流畅度的参数范围,本申请实施例不对其加以限制。
复杂度:当前帧和参考帧之间的SAD,SAD指当前编码块与预测块像素之差的绝对值之和。
下面以H264编码器为例,具体介绍一下编码原理:
(1)、首先将缓存中各个待编码视频帧划分宏块;
(2)、然后将缓存中的视频帧进行分组,得到GOP,并确定该GOP中的I帧(或者DIR帧)、P帧。或者确定GOP中的I帧(或者DIR帧)、B帧、P帧。
将视频帧序列分成GOP组;分组长度可以预设。
(3)、然后对GOP中的I帧基于QP选择帧内预测模式进行帧内预测,,对P帧或者B帧采用基于QP选择帧间预测模式进行帧间预测,得到初步压缩后的第一数据。该第一数据与该视频帧对应的第一矩阵。
(4)、对该第一数据进行DCT离散余弦变换(Discrete Cosine Transform)变换;该DCT变换后,该第一矩阵变为第二矩阵,该第二矩阵中的数值比第一矩阵中的数值小。
(5)、将变换后的第二数据,采用QP进行量化。对第二矩阵进行量化后得到第三矩阵,该第三矩阵中大部分变为0,小部分变为非0值。
(6)、对QP量化后的数据进行编码。比如进行熵编码。
编码完成后,该编码后的视频帧数据即可向外发出或者存储。然后在该编码后的视频帧数据发出后,将缓存中与该视频帧数据相关的数据从缓存中删除,该相关数据比如原视频帧、原视频帧的预测帧、编码后的视频帧等删除。其他视频编码器的原理基本类似,在此不再详述。
基于上述编码原理,发明人在研究过程中发现,在视频会议、视频直播、视频聊天等延时性要求很短的场景中,视频过程中,如果视频发送方的视频内容中的场景切换,会导致视频发送方发出的视频帧的码率很大,从而导致峰值带宽很高,视频发送端发送视频数据时出现卡顿的几率变大,视频接收方的接收视频数据是卡顿也几率变大。基于该问题,本申请发明人发现可以在视频发送端对视频帧进行处理,比如把场景切换类型的视频帧的码率减少,把正常视频帧的码率增加,可以尽量保证整体码率变化较小,在现在评估视频质量为测试一段帧序列的评估机制下,本申请实施例的该种方式对于视频质量的评估并不会降低很多,还能避免由于场景切换类型的视频帧的帧率过大,导致峰值带宽需求高的问题。
参照图1,其示出了本申请实施例提供的一种视频帧编码方法的***架构图。
如图1,包括了多个视频客户端和服务端101,多个视频客户端比如图1中的视频客户端102、103和104,每个视频客户端可以通过服务端101接收其他视频客户端的视频数据,以及通过服务端101将视频数据发送给其他视频客户端。其中,多个可以理解为至少两个。每个视频客户端可以带有摄像头设备,也可以不用带该摄像头设备。该视频数据可以为摄像头设备采集的数据,也可以为视频客户端共享***桌面后,对***桌面上显示的内容进行采集的数据。
该视频客户端可以个人电脑、笔记本、智能手机等设备,本申请实施例不对其加以限制。
其中,每个视频客户端既可以作为视频发送端,也可以作为视频接收端。
在本申请实施例中,各视频客户端如果要进行视频会议、视频直播、视频聊天等功能时,首先可以通过服务端建立相互之间的通信连接。
参照图2,其示出了本申请实施例提供的一种视频帧编码方法的***架构图。图2中,本申请的视频帧编码处理过程在视频发送端102中,视频发送端102将编码后的视频帧发送到服务端102,服务端102再将编码后的视频帧发送给视频接收端103,视频接收端103解码该视频帧并进行播放。其具体过程可以如下:
A10,视频发送端展示流畅度参数输入控件。
A11,视频发送端展响应于对所述流畅度参数输入控件的输入操作,获取流畅度参数.
如图2,视频发送端可以在用户触发进入视频会议、视频直播、视频聊天等界面110后,在该界面110中显示流畅度参数输入控件,该流畅度参数输入控件可以为如图2中的滑动条111,该滑动条111中有滑动按钮112,用户可以通过拖动该滑动按钮调节流畅度参数。视频发送端则可以在用户调节该流畅度参数输入控件后,获取最终的流畅度参数ws。
当然,本申请实施例中,流畅度参数的设置也可以在其他界面中进行,比如即时通讯客户端的***设置界面等,本申请实施例不对其加以限制。
A12,视频发送端获取待编码视频帧。
在本申请实施例中,用户开启视频会议、视频直播、视频聊天等模式后,可以调用视频发送端的摄像头采集视频帧。当然,在视频发送端的用户选择共享***桌面或者指定窗口给视频接收端的情况下,视频发送端获取摄像头采集的视频帧作为待编码视频帧,或者获取从***桌面或者指定窗口采集的视频帧作为待编码的视频帧。当然,待编码视频帧也可以是摄像头的视频帧和***桌面的视频帧组合得到的视频帧,待编码视频帧也可以是摄像头的视频帧和指定窗口的视频帧组合得到的视频帧。
需要说明的是,用户还可以在一些泛娱乐场景中的视频作为待编码视频,该泛娱乐场景比如影视剧的传输,游戏场景中视频的传输等,在视频发送端要将影视剧、正在进行游戏的游戏视频、在游戏中传输视频等。可以理解,在传输影视剧的场景下,该视频发送端可以为服务端,当然,也可以为用户使用的客户端,用户的客户端将本地播放的视频通过服务端发送给其他客户端。
在实际应用中,本申请实施例可以将待编码视频帧存入编码器的缓存中。在实际应用中,可以采集一个视频帧,然后按采集先后顺序存入该缓存。
当然,该待编码视频帧在缓存中是以视频帧序列的方式进行存储。
当然,如果视频发送端没有摄像头或者摄像头损坏,则可以直接向外发出值为空的视频数据。
可以理解,本申请实施例中,视频发送端可以不断获取待编码视频帧,然后不断对收到的待编码视频帧循环执行后续A13-A18的过程。
A13,视频发送端确定所述待编码视频帧中的目标帧;所述目标帧包括场景切换类型的视频帧。
在本申请实施例中,对于缓存中的待编码视频帧,可以按时间先后顺序逐帧判断该待编码视频帧是否为场景切换类型的视频帧。
可以理解属于该场景切换类型的视频帧的条件,可以为该待编码视频帧的码率,大于缓存中所有未编码视频帧的平均码率的预设倍数。
当然,可以理解属于该场景切换类型的视频帧的条件,可以为该待编码视频帧的复杂度,大于缓存中所有未编码视频帧的平均复杂度的预设倍数。
在实际应用中,对由于可以逐帧处理,该平均复杂度可以由上一轮的平均复杂度与一个预设的衰减因子之积,然后加上当前帧的复杂度与另一衰减因子之积获得。比如,可以通过公式(1)确定该平均复杂度:
FrameCmplxMeani=FrameCmplxMeani-1*ratio+当前帧帧内复杂度*(1-ratio)公式(1)
其中,FrameCmplxMeani为第i个视频帧对应的平均复杂度,FrameCmplxMeani-1为第i-1帧对应的平均复杂度,ratio为衰减因子,ratio取值范围可以为[0.0,1.0]。该ratio可以根据实际测试结果取值,比如可以取0.5。
在整个视频流的第一帧视频帧,其平均复杂度跟当前帧复杂度相同,从第二帧开始,由于第二帧的帧内复杂度开始变化,第二帧以及之后的帧对应的平均复杂度也变化。
可以理解,公式(1)中的当前帧帧内复杂度也可以替换为SAD这一单帧复杂度。该种情况下,对于整个视频流的第一帧视频帧,其对应的平均复杂度可以为该帧的帧内复杂度。
当然,如果采用码率进行计算,可以将上述公式的复杂度替换为相应码率,本申请实施例不对其加以限制。
在本申请实施例中,由于复杂度更能代表图像的内容复杂程度,采用复杂度确定前述目标帧能够更精准。并且计算的复杂度和平均复杂度可以直接在后续编码过程中使用,节省计算时间,降低视频延迟。
可以理解,在确定目标帧之后,进入A15。
可以理解,不是目标帧的待编码视频帧可以为正常视频帧。正常视频帧可以直接进入步骤A17,对于该正常视频帧,其量化参数可以为编码器按照码控模型进行计算。
A14,视频发送端削减所述目标帧的码率。
在本申请实施例中,对于符合上述条件的场景切换类型的视频帧,其码率大,本申请实施例可以先削减该目标帧的码率。削减之后可以分别进入A15和A18。
在实际应用中,可以先获取该目标帧的正常码率,采用预先训练的码率再分配模型,计算对该目标帧的码率削减量,然后将该正常码率减去该削减量,得到削减后的剩余码率。
其中,视频帧的正常码率,可以根据视频帧的大小计算获得。当然,也可以根据该编码器原有的码率分配模型,预测该视频帧的正常码率。本申请实施例不对其加以限制。
A15,视频发送端判断是否跳帧。如果是进入A13,如果否进入A16。
在本申请实施例中可以根据预设的调整机制,对削减码率后的目标帧进行跳帧判断,如果削减码率后,还是需要跳帧,则说明该视频发送端的网络环境特别差,先将该目标帧跳过,不进行后续编码过程。如果削减码率后,不需要调整,则执行后续的编码过程。
A16、视频发送端根据所述流畅度参数以及削减后的剩余码率,调整针对所述目标帧的量化参数;
A17、视频发送端根据所述量化参数,对所述削减视频帧进行编码;
在本申请实施例中,根据用户选择的流畅度参数以及剩余码率,调整量化参数QP,然后使编码器利用该QP执行前述(3)-(6)的编码过程。在实际应用中,本申请可以在编码器的原有编码线程之外,额外设置一个新编码线程,该新编码线程用于执行A10-A18的过过程,并在获得调整后的QP之后,调用编码器原有线程基于调整后的QP进行编码。
A18、视频发送端将削减的码率分配给除所述目标帧之外的至少一个待编码视频帧,并执行A13。
在本申请实施例中,可以将从场景切换类型的视频帧中削减的码率,分配到其他待编码视频帧中。
在实际应用中,可以将削减得到的码率分配给一个或多个正常视频帧,也可以将码率分配给所有待编码视频帧。然后再对每个待编码视频帧执行前述过程。
可以理解,由于目标帧的码率被分配给了一个或者多个待编码视频帧,如果其他帧是帧正常帧,被额外分配了码率,可能导致该帧的码率过高,反而具有前述目标帧的属性,因此,本申请对于待编码视频帧,可以循环执行A13-A18的过程,从而对于被分配码率后可能变为具有目标帧属性的待编码视频帧,能继续将其识别为目标帧,然后继续消减该帧的码率并进行再分配。
A19、视频发送端编码后的视频帧。
如图2,视频发送端可以将编码后的视频帧发送至服务端101,服务端101则将该编码后的视频帧转发给视频接收端。
A20、视频接收端获取编码后的视频帧;
A21、视频接收端解码所述编码后的视频帧;
A22、视频接收端播放解码后的视频帧.
视频接收端则可以从服务端101接收该视频发送端的视频帧数据,然后基于该编码器相对应的解码器,对该编码后的视频帧进行解码,然后即可播放该解码后的视频帧。
需要说明的是,本申请实施例中,也可以对音频数据进行类似处理。对于音频而言,音频的编码过程比如:
1、获取模拟信号;
2、将模拟信号分别输入子带滤波器和声带模型;
3、根据子带滤波器的输出与声带模型的输出,为音频帧分配码率;
4、根据该分配的码率,对子带滤波器的输出进行量化;
5、对量化的结果进行编码。
编码后的数据则可以向服务端发出。
在实际应用中,可以为音频数据设置目标帧的判断条件,比如音频帧的码率超过设定阈值。然后基于该判断条件,判断各音频帧是否为目标音频帧;如果是目标音频帧,则可将该音频帧的码率进行削减,然后对消减后的音频帧进行量化以及编码;然后将削减后的码率分配给后续音频帧;如果不是目标音频帧,则对该音频帧进行量化以及编码。循环执行该过程,直到获取的音频结束。
其中,该设定阈值可以与网络环境信息对应,不同的网络环境信息可以预设不同的阈值。当然,对于音频也可以采用前述流畅度的概念,基于流畅度参数判断音频帧中的目标音频帧,以及基于流畅度参数对目标音频帧进行量化,具体本申请实施例不对其加以限制。本申请实施例中,首先,提出了流畅度参数的概念,该流畅度参数可以作为接口提供给用户进行操作,如前述流畅度参数控件与流畅度参数的输入接口,用户可以通过该流畅度参数控件实现清晰模式和流畅模式的无极滑动。
其次,对于一个待编码视频帧,先判断其是否为场景切换类型的视频帧,如果该待编码视频帧是场景切换类型的视频帧,则削减该视频帧的码率,然后将削减的该部分码率分配给其他待编码视频,然后再对下一个待编码视频执行上述过程,如此,由于在视频帧的处理过程中,将本身就是场景切换类型的视频帧,或者被分配了新的码率后成为了场景切换类型的视频帧,都会将上述视频帧的码率削减,分配给其他帧,比如待编码视频中的正常视频帧,如此,把场景切换类型的视频帧的码率减少,把正常视频帧的码率增加,可以尽量保证整体码率变化较小,在现在评估视频质量为测试一段帧序列的评估机制下,本申请实施例的该种方式对于视频质量的评估并不会降低很多,能够尽量保证清晰度的条件下使得卡顿率将低。
再次,由于基于流畅度参数和削减后的剩余码率,调整该目标帧的量化参数,使在对该目标帧进行编码时,可以在降低该目标帧的码率的情况下,使编码后的视频帧能尽量清晰,能进一步实现保证清晰度的条件下使得卡顿率将低的效果。
另外,本申请实施例可以应用于视频发送端,在视频源头,将视频帧进行上述处理,使发送出去的视频帧能够尽量平滑,从而在视频源头,在视频会议等需要低延迟的场景下,实现保证清晰度的条件下使得卡顿率将低的效果。该低延迟可以理解为延迟小于预设延迟阈值,该延迟阈值可以根据实际需求设定。
参照图3,其示出了本申请实施例的一种视频帧编码方法的步骤流程图,应用于视频发送端。该方法包括:步骤210-步骤260。
步骤210,获取待编码视频帧;
在本申请实施例中,如前述A12,视频发送端可以不断获取待编码视频存入缓存。
步骤220,确定所述待编码视频帧中的目标帧;所述目标帧包括场景切换类型的视频帧;
在本申请实施例中,可以如前述A13按时间先后顺序逐帧处理。也可以在缓存了多个待编码视频帧之后,同步确定各帧是否为该目标帧。
可选地,在本申请一实施例中,步骤220包括:
子步骤2201,根据所述预设的流畅度参数,确定所述待编码视频帧中的目标帧。
在本申请实施例中,可以预先设置流畅度参数ws,然后在该流畅度参数限定下,执行后续处理过程,以实现在该流畅度参数的规定下,尽量提高清晰度的同时降低卡帧率。
在实际应用中,如果视频发送端设置的是流畅度参数级别,用户选择某个级别的流畅度参数,则本申请实施例获取相应级别的流畅度参数。
如果未向用户提供流畅度参数设置接口,则可以采用应用程序默认的参数。
可选地,在本申请一实施例中,在步骤210之前,还可以包括:步骤201-202;
步骤201,展示流畅度参数输入控件;
步骤202,响应于对所述流畅度参数输入控件的输入操作,获取流畅度参数。
如图2,在视频发送端中可以展示视频展示界面110,在该视频展示界面110中,可以展示流畅度参数输入控件。用户根据当前的网络环境或者设备性能,操作该流畅度参数输入控件,输入该用户想要的流畅度参数。从而视频发送端可以通过该流畅度参数输入控件获取到用户需求的流畅度参数。
可选地,在本申请一实施例中,所述流畅度参数输入控件为滑动控件,所述输入操作为滑动操作。比如图2中,流畅度参数输入控件为滑动条111,该滑动条111中有滑动按钮112,用户可以操作该滑动按钮112调节流畅度参数。图2中,向右滑动,流畅度降低,最低可以为0。图2中,向左滑动,流畅度升高,最高可以为100。流畅度参数越低,视频质量越高,流畅度参数越高,视频质量越低。
本申请实施例提出了流畅度参数的概念,该流畅度参数可以作为接口提供给用户进行操作,如前述流畅度参数控件与流畅度参数的输入接口,用户可以通过该流畅度参数控件实现清晰模式和流畅模式的无极滑动。
可选地,在本申请一实施例中,所述流畅度参数输入控件为输入框,所述输入操作为在所述输入框中进行输入。
可选地,在步骤210之前,还可以包括:步骤203-204;
步骤203,获取网络环境信息;
步骤204,根据所述网络环境信息,确定所述流畅度参数。
在本申请实施例中,可以自动识别视频发送端的网络环境信息,然后可以根据该网络带宽大小与流畅度参数之间的对应关系,确定流畅度参数。。其中,网络环境信息可以理解为影响设备在网络中收发数据的能力的相关参数。网络环境信息越好,设备收发数据的能力越好,反之,网络环境信息越差,设备收发数据的能力越差。该网络环境信息比如网络带宽大小、网络的稳定性、网络的抖动、网络的丢包率等中的至少一项。如此,可以自动根据网络环境设置流畅度参数,降低用户操作繁琐程度。
在实际应用中,可以预先设置或者训练一个上述网络环境信息与流畅度参数之间的数学模型,该模型的输入为上述网络环境信息中的至少一项,输出为该流畅度参数,如此,可以针对各种网络情况输出一个流畅度参数。
其中,视频网络带宽大小、网络的稳定性、网络的抖动、网络的丢包率等参数,可以通过发送ping包的方式进行检测,具体方式本申请实施例不对其加以限制。或者预先设置一个测试插件,调用该测试插件测试上述网络环境信息,具体检测方法本申请实施例不对其加以限制。
可选地,在本申请一实施例中,所述子步骤2201包括:子步骤B11-B12
子步骤B11,获取所述待编码视频帧的单帧复杂度,以及所述待编码视频帧的平均复杂度;
子步骤B12,根据所述单帧复杂度、所述平均复杂度、所述流畅度参数,确定所述待编码视频帧中的目标帧。
在本申请实施例中,该单帧复杂度可以为该待编码视频帧和参考帧之间的前述SAD,以目标帧和参考帧之差的绝对值之和作为该单帧复杂度。
在本申请实施例中,对于待编码视频,可以先进行前述的(1)、(2)确定GOP以及每个GOP中各帧的类型。对于IDR帧,其参考帧空,其复杂度为自己的像素值之和。对于I帧或者P帧,其参考帧可以为该帧之前的一帧。对于B帧,其参考帧可以为该帧的前一帧以及该帧的后一帧。
然后,还可以获取针对该目标帧的平均复杂度FrameCmplx。在实际应用中,由于可以逐帧处理,该平均复杂度FrameCmplxMean可以采用前述公式(1)进行计算,则不用对收到的视频帧进行计数,避免出现由于视频帧过多导致计数器溢出。
当然,也可以将缓存中所有的待编码视频帧的复杂度进行累加,然后将累加值除以缓存中的待编码视频的个数,本申请实施例对计数平均复杂度的方式不加以限制。
在得到针对该待编码视频帧的单帧复杂度、平均复杂度后,可以结合前述的流畅度参数,判断待编码视频帧是否为场景切换类型的目标帧,从而使目标帧的判断能够更契合流畅度参数,使后续编码的视频的码率更符合该流畅度参数的需求。
可选地,所述子步骤B12,包括:
子步骤B121,根据所述单帧复杂度与所述流畅度参数的第一乘积,与所述平均复杂度与预设系数的第二乘积之间的比较结果,确定所述待编码视频帧中的目标帧。
在实际应用中,可以将前述FrameCmplx*ws的结果,然后与FrameCmplxMean*预设系数c的结果,进行比较,确定确定所述待编码视频帧中的目标帧。
其中该c可以根据实际测试结果设置,比如3,本申请实施例不对其加以限制。
可选地,子步骤B121,包括:子步骤B1211-子步骤B122,
子步骤B1211,在所述第一乘积大于所述第二乘积的情况下,确定所述待编码视频帧为目标帧;
子步骤B1212,在所述第一乘积小于或等于所述第二乘积的情况下,确定所述待编码视频帧为正常视频帧。
比如,FrameCmplx*ws>FrameCmplxMean*c,则认为该帧为场景切换类型的视频帧。
FrameCmplx*ws≤FrameCmplxMean*c,则认为该帧为正常视频帧。
当然,在本申请实施例中,还可以采用其他方式确定场景切换类型的视频帧,本申请实施例不对其加以限制。比如FrameCmplx/FrameCmplxMean>a/ws,则认为该帧为场景切换类型的视频帧。FrameCmplx/FrameCmplxMean≤a/ws,则认为该帧为正常视频帧。
需要说明的是,为了方便计算,本申请实施例还可以计算该目标帧的单帧复杂度比例因子,如FrameCmplx/FrameCmplxMean。
对于目标帧,进入步骤230。对于正常视频帧,则获取根据码控模型确定量化参数,然后进入步骤250。该码控模型比如:
QP=(a*FrameCmplx/Bits)+b,
其中,a,b是通过视频帧样本训练出来的参数;其中FrameCmplx为该帧的单帧复杂度,Bits对于正常视频帧,为该帧的当前码率。
需要说明的是,该当前码率可以如前述实施例中的描述,可以根据该帧的大小进行计算,也可以采用编码器的码率计算规则进行计算。
步骤230,削减所述目标帧的码率;
该步骤如前述A14的描述,可以对目标帧进行码率削减的计算,得到削减量,和剩余码率。
可选地,所述步骤230可以包括:子步骤231-232,
子步骤231,确定所述目标帧的帧类型;其中,不同的帧类型对应不同的码率再分配模型;
子步骤232,根据所述目标帧的削减前码率、所述单帧复杂度、所述平均复杂度以及所述帧类型对应的码率再分配模型,确定所述目标帧的码率削减量。
在本申请实施例中,由于帧类型有多种,比如前述的IDR帧、I帧、B帧、P帧,不同的帧类型,削减的码率标准不一样,如果采用一样的码率削减方式,可能导致削减后该帧的视频质量严重下降,从而影响整体视频视频。而由于一个GOP组中可能存在IDR帧、P帧,或者I帧、P帧,或者IDR帧、B帧、P帧,或者I帧、B帧、P帧。因此,本申请实施例中,对于不同类型的视频帧,预先训练了不同的码率再分配模型,用以计算该种类型的视频帧的码率削减量,保证削减之后,该帧视频能在降低卡帧率的情况下尽量清晰。比如对于IDR帧,对应训练有IDR帧码率再分配模型;对于I帧,对应训练有I帧码率再分配模型;对于B帧,对应训练有B帧码率再分配模型;对于P帧,对应训练有P帧码率再分配模型。
因此,对于每个目标帧,可以先确定该目标帧的类型,然后基于该类型去获取相应的码率再分配模型。
另外,可以根据前述方式,获取目标帧的削减前码率、所述单帧复杂度、所述平均复杂度,将该三者作为码率再分配模的输入,输出码率削减量。
在实际应用中,对于每种类型的帧,可以基于该类类型的帧削减前码率和复杂度比例因子,训练该码率再分配模。然后在使用过程中,先如前述方式计算复杂度比例因子FrameCmplx/FrameCmplxMean,以及削减前码率,然后将该复杂度比例因子、削减前码率输入该码率再分配模型,输出码率削减量。
需要说明的是,在训练码率再分配模型是,还可以将流畅度参数ws作为一个特征,对码率再分配模型进行训练,然后在使用过程中,可以将所述目标帧的削减前码率、所述单帧复杂度、所述平均复杂度、流畅度参数ws作为模型输入,输出码率削减量,能够获得与ws更匹配的码率削减量。
可选地,在本申请一实施例中,在步骤230之后,还可以包括:步骤231-232;
步骤231,在所述削减视频帧的剩余码率大于跳帧阈值的情况下,跳过所述削减视频帧对应的目标帧;
步骤232,在所述削减视频帧的剩余码率小于或等于跳帧阈值的情况下,执行根据预设的流畅度参数以及削减后的剩余码率,调整针对所述目标帧的量化参数的步骤。
该跳帧阈值可以跟流畅度参数ws对应,比如采用一个线性函数,关联该流畅度和跳帧阈值,在用户确定该ws的情况下,可以通过该对应关系,确定相应跳帧阈值。
在本申请实施例中,可以在削减码率的基础上,对目标帧进行进一步判断,如果该帧削减后,其码率还是不满足该流畅度要求,则可以跳过该帧,不进行后续处理过程,降低卡帧率。
需要说明的是,本申请实施例还可以采用其他跳帧机制,本申请实施例不对其加以限制。
步骤240,根据预设的流畅度参数以及削减后的剩余码率,调整针对所述目标帧的量化参数;
本步骤参照前述的步骤A16的描述,在此不再详述。
可选地,在本申请一实施例中,步骤240可以包括:子步骤241-244;
子步骤241,根据所述流畅度参数ws,确定量化偏移参数;
子步骤242,根据所述量化偏移参数,调整所述量化参数的范围值;
在本申请实施例中,可以根据ws,去计算一个量化偏移参数clip_qp_offset,然后基于该clip_qp_offset去修改qp钳位机制的量化参数的最大值iMaxFrameQp和最小值iMinFrameQp。该qp钳位机制要使计算出来的qp在该最大值和最小值之间,其计算公式可以如下:
iMinFrameQpi=iMinFrameQpi-1+clip_qp_offset;
iMaxFrameQpi=iMaxFrameQpi-1+clip_qp_offset;
其中,iMinFrameQpi为当前的第i帧的qp最小值,iMinFrameQpi-1为第i-1帧的qp最小值。
iMaxFrameQpi为当前的第i帧的qp最大值,iMaxFrameQpi-1为第i-1帧的qp最大值,clip_qp_offset为第i帧的量化偏移参数。
可选地,在本申请一实施例中,子步骤241以包括:子步骤2411-2412;
子步骤2411,获取复杂度比例因子,所述复杂度比例因子为目标帧的单帧复杂度与所述待编码视频帧的平均复杂度之比;
子步骤2412,将所述流畅度参数和所述复杂度比例因子,输入预设的偏移参数确定模型,确定所述量化偏移参数。
在本申请实施例中,可以在前述过程中获取前述复杂度比例因子FrameCmplx/FrameCmplxMean,当然,也可以在本步骤中再获取该复杂度比例因子。
然后将所述流畅度参数和所述复杂度比例因子,输入预设的偏移参数确定模型,确定所述量化偏移参数clip_qp_offset。
可以理解,本申请实施例中,可以预先基于不同ws下的视频帧的样本帧,提取该样本帧的复杂度比例因子样本,然后以ws和复杂度比例因子样本,训练该偏移参数确定模型。
需要说明的是,该量化偏移参数还可以采用其他方式获取,比如直接将ws作为量化偏移参数,或者将该量化偏移参数乘以一个预设系数,本申请实施例不对其加以限制。
子步骤243,根据所述目标帧的单帧复杂度和削减后的剩余码率,确定第一量化参数;
在本申请实施例中,对于削减了码率的目标帧,可以基于该目标帧的单帧复杂度和削减后的剩余码率,计算该第一量化参数,该第一量化参数可以理解为进行钳位之前的qp,该qp可能会导致图像码率太大,不符合ws要求的流畅程度。
可选地,在本申请一实施例中,子步骤243以包括:
子步骤2431,将所述单帧复杂度和所述剩余码率,输入预设的码控模型,确定所述第一量化参数。
需要说明的是,在本申请实施例中,可以预先根据样本帧的单帧复杂度和剩余码率训练码控模型。然后在使用过程中,将该单帧复杂度和该剩余码率输入该码控模型,得到该第一量化参数。
该码控模型比如:
QP=(a*FrameCmplx/Bits)+b,
其中,a,b可以是通过视频帧样本训练出来的参数;其中FrameCmplx为该帧的单帧复杂度,Bits对于目标帧,为该帧的削减后的码率。Bits对于非目标帧,为该帧正常计算出的码率。
当然,本申请实施例的码控模型不限定于该种模型。
子步骤244,根据所述范围值,调整所述第一量化参数,获得最终的量化参数。
在前述第一量化参数计算得到之后,通过钳位机制,对该第一量化参数进行钳位,使最终的qp在调整后的前述最大值iMaxFrameQp和最小值iMinFrameQp之间。
在实际应用中,如果第一量化参数小于qp最小值,则可以将qp最小值作为最终的qp。如果第一量化参数大于qp最大值,则可以将qp最大值作为最终的qp。当第一量化参数大于等于qp最小值,且小于等于qp最大值的情况下,该第一量化参数则为最终的qp。比如qp钳位机制的qp最大值为1000,最小值为500,如果计算出来的qp=499,则将该qp调整为500,以500对该视频帧行编码;如果计算处理的qp=1010,则将qp调整为1000,以该1000对该视频帧进行编码。
在本申请实施例中,由于可以根据流畅度参数计算一个量化偏移参数,然后基于该量化偏移参数调整qp钳位机制的量化参数qp的最大最小值,从而在对后续计算出的qp进行钳位时,能够获得与ws更匹配的qp,使采用该qp编码的视频帧能够在流畅度参数的要求下,尽量保证清晰。
步骤250,根据所述量化参数,对所述削减视频帧进行编码;
该步骤参照前述A17,在此不再详述。
步骤260,将削减的码率分配给除所述目标帧之外的至少一个待编码视频帧,并执行步骤120。
在实际应用中,如果逐帧进行处理,为了是分配的码率更合理,可以将给削减的码率平均分配给该帧之后的各待编码视频帧。当然,在分配时,还可以考虑该帧之后的各待编码视频帧的复杂度,按照各帧的复杂度占总复杂度的比例加权分配,复杂度高的分配的码率多,复杂度低的分配码率少。该总复杂度为该帧之后的各待编码视频帧的复杂度之和。
需要说明的是,上述各个模型训练是采用的视频帧样本可以为相同的视频帧样本,用相同的视频帧样本然后分别提取各个模型需求的参数,如此使上述模型配合更准确,得到的结果也更准确。
可以理解,上述模型均可以理解为一种数学模型,数学模型是运用数理逻辑方法和数学语言建构的科学或工程模型,数学模型是针对参照某种事物***的特征或数量依存关系,采用数学语言,概括地或近似地表述出的一种数学结构,这种数学结构是借助于数学符号刻画出来的某种***的纯关系结构。数学模型可以是一个或一组代数方程、微分方程、差分方程、积分方程或统计学方程及其组合,通过这些方程定量地或定性地描述***各变量之间的相互关系或因果关系。除了用方程描述的数学模型外,还有用其他数学工具,如代数、几何、拓扑、数理逻辑等描述的模型。其中,数学模型描述的是***的行为和特征而不是***的实际结构。
本申请实施例中,对于一个待编码视频帧,先判断其是否为场景切换类型的视频帧,如果该待编码视频帧是场景切换类型的视频帧,则削减该视频帧的码率,然后将削减的该部分码率分配给其他待编码视频,然后再对下一个待编码视频执行上述过程,如此,由于在视频帧的处理过程中,将本身就是场景切换类型的视频帧,或者被分配了新的码率后成为了场景切换类型的视频帧,都会将上述视频帧的码率削减,分配给其他帧,比如待编码视频中的正常视频帧,如此,把场景切换类型的视频帧的码率减少,把正常视频帧的码率增加,可以尽量保证整体码率变化较小,在现在评估视频质量为测试一段帧序列的评估机制下,本申请实施例的该种方式对于视频质量的评估并不会降低很多,能够尽量保证清晰度的条件下使得卡顿率将低。
再次,由于基于流畅度参数和削减后的剩余码率,调整该目标帧的量化参数,使在对该目标帧进行编码时,可以在降低该目标帧的码率的情况下,使编码后的视频帧能尽量清晰,能进一步实现保证清晰度的条件下使得卡顿率降低的效果。
另外,本申请实施例可以应用于视频发送端,在视频源头,将视频帧进行上述处理,使发送出去的视频帧能够尽量平滑,从而在视频源头,在视频会议等需要低延迟的场景下,实现保证清晰度的条件下使得卡顿率将低的效果。该低延迟可以理解为延迟小于预设延迟阈值,该延迟阈值可以根据实际需求设定。
参照图4,其示出了本申请实施例的一种视频帧编码方法的步骤流程图,应用于视频发送端。该方法包括:步骤310-步骤360。
步骤310,获取待编码视频帧;
本步骤参照前述步骤210,在此不再详述。
步骤320,确定所述待编码视频帧中的目标帧;所述目标帧包括场景切换类型的视频帧;
本步骤参照前述步骤220,在此不再详述。
步骤330,削减所述目标帧的码率;
本步骤参照前述步骤230,在此不再详述。
步骤340,将削减的码率分配给除所述目标帧之外的至少一个待编码视频帧,并执行确定所述待编码视频帧中的目标帧的步骤。
步骤340可以参照前述步骤260的描述,在此不再详述。
可选地,在步骤步骤330之后,可以还包括:
步骤350,基于削减后剩余的码率,对所述目标帧进行编码;
可选地,在本申请一实施例中,在步骤310之前,还可以包括:
步骤301,获取流畅度参数;
本步骤可以参照前述步骤201-202,或者步骤203-204的方式获取流畅度参数,在此不再详述。
可选地,在本申请一实施例中,步骤350包括:子步骤351-352;
子步骤351,根据所述流畅度参数以及削减后的剩余码率,调整针对所述目标帧的量化参数;
子步骤352,根据所述量化参数,对所述削减视频帧进行编码。
子步骤351-352可以参照前述步骤240-250的描述,在此不再详述。
当然,在本申请实施例中,还可以直接基于削减后的剩余码率,计算该qp,然后进行编码。
本申请实施例的相关步骤的执行过程可以参照前述图3的实施例,在此不再详述。
本申请实施例中,对于一个待编码视频帧,先判断其是否为场景切换类型的视频帧,如果该待编码视频帧是场景切换类型的视频帧,则削减该视频帧的码率,然后将削减的该部分码率分配给其他待编码视频,然后再对下一个待编码视频执行上述过程,如此,由于在视频帧的处理过程中,将本身就是场景切换类型的视频帧,或者被分配了新的码率后成为了场景切换类型的视频帧,都会将上述视频帧的码率削减,分配给其他帧,比如待编码视频中的正常视频帧,如此,把场景切换类型的视频帧的码率减少,把正常视频帧的码率增加,可以尽量保证整体码率变化较小,在现在评估视频质量为测试一段帧序列的评估机制下,本申请实施例的该种方式对于视频质量的评估并不会降低很多,能够尽量保证清晰度的条件下使得卡顿率将低。另外,如果基于流畅度参数和削减后的剩余码率,调整该目标帧的量化参数,使在对该目标帧进行编码时,可以在降低该目标帧的码率的情况下,使编码后的视频帧能尽量清晰,能进一步实现保证清晰度的条件下使得卡顿率将低的效果。
参照图5,其示出了本申请实施例的一种视频帧编码方法的步骤流程图,应用于服务端。该方法包括:步骤410-步骤460。
步骤410,获取视频发送端发送的第一视频流,以及获取视频接收端的流畅度参数;
步骤420,解码所述第一视频流,获取待编码视频帧;
步骤430,确定所述待编码视频帧中的目标帧;所述目标帧包括场景切换类型的视频帧;
步骤440,削减所述目标帧的码率;
步骤450,根据预设的流畅度参数以及削减后的剩余码率,调整针对所述目标帧的量化参数;
步骤460,根据所述量化参数,对所述削减视频帧进行编码,并向视频接收端发送编码后的第二视频流;
步骤470,将削减的码率分配给除所述目标帧之外的至少一个待编码视频帧,并步骤430。
本申请实施例与前述实施例的区别在于执行主体为服务端,然后在步骤410中,服务端要接收视频发送端发送编码后的第一视频流,以及接收视频接收端提供的流畅度参数。然后在步骤420中多了一个对第一视频流解码的过程,并且是将解码后的视频帧作为待编码视频帧。然后在步骤470中多了一步将编码后的视频流直接发送给视频接收端的过程。其他执行过程与前述实施例的原理类似,在此不再详述。
本申请实施例中,首先,提出了流畅度参数的概念,该流畅度参数可以作为接口提供给用户进行操作,如前述流畅度参数控件与流畅度参数的输入接口,用户可以通过该流畅度参数控件实现清晰模式和流畅模式的无极滑动。
其次,对于一个待编码视频帧,先判断其是否为场景切换类型的视频帧,如果该待编码视频帧是场景切换类型的视频帧,则削减该视频帧的码率,然后将削减的该部分码率分配给其他待编码视频,然后再对下一个待编码视频执行上述过程,如此,由于在视频帧的处理过程中,将本身就是场景切换类型的视频帧,或者被分配了新的码率后成为了场景切换类型的视频帧,都会将上述视频帧的码率削减,分配给其他帧,比如待编码视频中的正常视频帧,如此,把场景切换类型的视频帧的码率减少,把正常视频帧的码率增加,可以尽量保证整体码率变化较小,在现在评估视频质量为测试一段帧序列的评估机制下,本申请实施例的该种方式对于视频质量的评估并不会降低很多,能够尽量保证清晰度的条件下使得卡顿率将低。
再次,由于基于流畅度参数和削减后的剩余码率,调整该目标帧的量化参数,使在对该目标帧进行编码时,可以在降低该目标帧的码率的情况下,使编码后的视频帧能尽量清晰,能进一步实现保证清晰度的条件下使得卡顿率将低的效果。
另外,本申请实施例可以应用于服务端,在服务端,将视频帧进行上述处理,使发送出去的视频帧能够尽量平滑,从而使得视频接收端能够在其流畅度的需求的情况下,在尽量保证视频清晰度的情况下降低卡帧率。
需要说明的是,图4实施例的方式,也可以参照图5实施例的方式,应用到服务端中,在此不再详述。
参照图6,其示出了本申请实施例的一种视频会议数据的处理方法的步骤流程图,应用于视频发送端。该方法包括:步骤510-步骤516。
步骤510,获取视频会议数据中的待编码视频帧;
本申请实施例中,如果用户要与其他用户进行视频会议,可以使用某个视频客户端A,通过如图1的架构与一个或多个其他用户的视频客户端B,进行视频会议。那么在视频会议过程中,对于该视频客户端A的摄像头采集的视频数据、共享桌面的视频数据或者共享窗口的视频数据,本申请实施例则可以获取上述视频数据的中的视频帧作为待编码视频帧,然后执行后续步骤后,将编码后的视频数据发送到服务端。服务端再将编码后的视频数据发送到该视频会议的其他参与方的视频客户端。将编码后的视频数据发送到视频会议的其他参与方的视频客户端的具体方式本申请实施例不对其加以限定。
在本申请实施例中,如前述A12,视频发送端可以不断从视频会议数据中获取待编码视频存入缓存。步骤512,确定所述待编码视频帧中的目标帧;所述目标帧包括场景切换类型的视频帧;
在本申请实施例中,可以如前述A13按时间先后顺序逐帧处理。也可以在缓存了多个待编码视频帧之后,同步确定各帧是否为该目标帧。
如果是目标帧,则进入步骤514,如果不是目标帧,则可以直接按照前述码控模型的公式计算QP,然后按照该QP对该帧进行编码。
可选地,所述确定所述待编码视频帧中的目标帧,包括:
子步骤5121,根据预设的流畅度参数,确定所述待编码视频帧中的目标帧。
在本申请实施例中,可以预先设置流畅度参数ws,然后在该流畅度参数限定下,执行后续处理过程,以实现在该流畅度参数的规定下,尽量提高清晰度的同时降低卡帧率。
在实际应用中,如果视频发送端设置的是流畅度参数级别,用户选择某个级别的流畅度参数,则本申请实施例获取相应级别的流畅度参数。
如果未向用户提供流畅度参数设置接口,则可以采用应用程序默认的参数。
可选地,在本申请一实施例中,在步骤510之前,还可以包括:
步骤D10,获取流畅度参数。
本步骤可以参照前述步骤201-202,或者步骤203-204的方式获取流畅度参数,在此不再详述。
在本申请实施例中,可以获取视频发送端设置的流畅度参数。
可选地,步骤D10可以包括:子步骤D101-子步骤D102。
子步骤D101,展示流畅度参数输入控件;
子步骤D101,响应于对所述流畅度参数输入控件的输入操作,获取流畅度参数。
如图2,在视频发送端中可以展示视频展示界面110,在该视频展示界面110中,可以展示流畅度参数输入控件。用户根据当前的网络环境或者设备性能,操作该流畅度参数输入控件,输入该用户想要的流畅度参数。从而视频发送端可以通过该流畅度参数输入控件获取到用户需求的流畅度参数。
可选地,在本申请一实施例中,所述流畅度参数输入控件为滑动控件,所述输入操作为滑动操作。比如图2中,流畅度参数输入控件为滑动条111,该滑动条111中有滑动按钮112,用户可以操作该滑动按钮112调节流畅度参数。图2中,向右滑动,流畅度降低,最低可以为0。图2中,向左滑动,流畅度升高,最高可以为100。流畅度参数越低,视频质量越高,流畅度参数越高,视频质量越低。
本申请实施例提出了流畅度参数的概念,该流畅度参数可以作为接口提供给用户进行操作,如前述流畅度参数控件与流畅度参数的输入接口,用户可以通过该流畅度参数控件实现清晰模式和流畅模式的无极滑动。
可选地,在本申请一实施例中,所述流畅度参数输入控件为输入框,所述输入操作为在所述输入框中进行输入。
可选地,在本申请实施例中,还可以如前述步骤203及204的过程,在步骤510之前,获取网络环境信息,然后根据该网络环境信息,确定所述流畅度参数。具体原理参照前述步骤203、204的描述。·本申请实施例中,步骤512与前述步骤220的原理类似,步骤512可以参照前述实施例的步骤220的描述,在此不再详述。
步骤514,削减所述目标帧的码率;
该步骤如前述A14的描述,可以对目标帧进行码率削减的计算,得到削减量,和剩余码率。
在本申请实施例中,步骤514与前述步骤230的原理类似,步骤514可以参照前述步骤230的描述,在此不再详述。
步骤516,将削减的码率分配给除所述目标帧之外的至少一个待编码视频帧,并执行步骤512。
在实际应用中,如果逐帧进行处理,为了是分配的码率更合理,可以将给削减的码率平均分配给该帧之后的各待编码视频帧。当然,在分配时,还可以考虑该帧之后的各待编码视频帧的复杂度,按照各帧的复杂度占总复杂度的比例加权分配,复杂度高的分配的码率多,复杂度低的分配码率少。该总复杂度为该帧之后的各待编码视频帧的复杂度之和。
本申请实施例中,步骤516可以参照前述步骤260的描述,在此不再详述。
可选地,在步骤514之后,可以还包括:
步骤518,基于削减后剩余的码率,对所述目标帧进行编码。
可选地可选地,在本申请一实施例中,步骤518包括:子步骤5181-5182;
子步骤5181,根据所述流畅度参数以及削减后的剩余码率,调整针对所述目标帧的量化参数;
本步骤参照前述的步骤A16的描述,在此不再详述。
可选地,所述子步骤5181可以包括:子步骤K11-子步骤K14
子步骤K11,根据所述流畅度参数,确定量化偏移参数;
子步骤K12,根据所述量化偏移参数,调整所述量化参数的范围值;
在本申请实施例中,可以根据ws,去计算一个量化偏移参数clip_qp_offset,然后基于该clip_qp_offset去修改qp钳位机制的量化参数的最大值iMaxFrameQp和最小值iMinFrameQp。该qp钳位机制要使计算出来的qp在该最大值和最小值之间,其计算公式可以如下:
iMinFrameQpi=iMinFrameQpi-1+clip_qp_offset;
iMaxFrameQpi=iMaxFrameQpi-1+clip_qp_offset;
其中,iMinFrameQpi为当前的第i帧的qp最小值,iMinFrameQpi-1为第i-1帧的qp最小值。
iMaxFrameQpi为当前的第i帧的qp最大值,iMaxFrameQpi-1为第i-1帧的qp最大值,clip_qp_offset为第i帧的量化偏移参数。
可选地,在本申请一实施例中,子步骤K11以包括:子步骤K111-K112;
子步骤K111,获取复杂度比例因子,所述复杂度比例因子为目标帧的单帧复杂度与所述待编码视频帧的平均复杂度之比;
子步骤K112,将所述流畅度参数和所述复杂度比例因子,输入预设的偏移参数确定模型,确定所述量化偏移参数。
在本申请实施例中,可以在前述过程中获取前述复杂度比例因子FrameCmplx/FrameCmplxMean,当然,也可以在本步骤中再获取该复杂度比例因子。
然后将所述流畅度参数和所述复杂度比例因子,输入预设的偏移参数确定模型,确定所述量化偏移参数clip_qp_offset。
可以理解,本申请实施例中,可以预先基于不同ws下的视频帧的样本帧,提取该样本帧的复杂度比例因子样本,然后以ws和复杂度比例因子样本,训练该偏移参数确定模型。
需要说明的是,该量化偏移参数还可以采用其他方式获取,比如直接将ws作为量化偏移参数,或者将该量化偏移参数乘以一个预设系数,本申请实施例不对其加以限制。
子步骤K13,根据所述目标帧的单帧复杂度和削减后的剩余码率,确定第一量化参数;
在本申请实施例中,对于削减了码率的目标帧,可以基于该目标帧的单帧复杂度和削减后的剩余码率,计算该第一量化参数,该第一量化参数可以理解为进行钳位之前的qp,该qp可能会导致图像码率太大,不符合ws要求的流畅程度。
可选地,在本申请一实施例中,子步骤K13以包括:
子步骤K131,将所述单帧复杂度和所述剩余码率,输入预设的码控模型,确定所述第一量化参数。
需要说明的是,在本申请实施例中,可以预先根据样本帧的单帧复杂度和剩余码率训练码控模型。然后在使用过程中,将该单帧复杂度和该剩余码率输入该码控模型,得到该第一量化参数。
该码控模型比如:
QP=(a*FrameCmplx/Bits)+b,
其中,a,b可以是通过视频帧样本训练出来的参数;其中FrameCmplx为该帧的单帧复杂度,Bits对于目标帧,为该帧的削减后的码率。Bits对于非目标帧,为该帧正常计算出的码率。
当然,本申请实施例的码控模型不限定于该种模型。
子步骤K14,根据所述范围值,调整所述第一量化参数,获得最终的量化参数。
在前述第一量化参数计算得到之后,通过钳位机制,对该第一量化参数进行钳位,使最终的qp在调整后的前述最大值iMaxFrameQp和最小值iMinFrameQp之间。
在实际应用中,如果第一量化参数小于qp最小值,则可以将qp最小值作为最终的qp。如果第一量化参数大于qp最大值,则可以将qp最大值作为最终的qp。当第一量化参数大于等于qp最小值,且小于等于qp最大值的情况下,该第一量化参数则为最终的qp。比如qp钳位机制的qp最大值为1000,最小值为500,如果计算出来的qp=499,则将该qp调整为500,以500对该视频帧行编码;如果计算处理的qp=1010,则将qp调整为1000,以该1000对该视频帧进行编码。
在本申请实施例中,由于可以根据流畅度参数计算一个量化偏移参数,然后基于该量化偏移参数调整qp钳位机制的量化参数qp的最大最小值,从而在对后续计算出的qp进行钳位时,能够获得与ws更匹配的qp,使采用该qp编码的视频帧能够在流畅度参数的要求下,尽量保证清晰。
子步骤5182,根据所述量化参数,对所述削减视频帧进行编码。
该步骤参照前述A17,在此不再详述。
本申请实施例中,子步骤5181-5182可以参照前述步骤240-250的描述,在此不再详述。
当然,在本申请实施例中,还可以直接基于削减后的剩余码率,计算该qp,然后进行编码。
需要说明的是,如果视频会议结束,则可以不再执行上述步骤。
下面以一种示例介绍上述循环过程:
比如步骤510,在视频会议过程中获取了视频会议帧的视频帧A1、A2、A3、A4……A10,这些帧作为待编码视频帧。
那么,在第一次循环过程中,比如通过步骤512确定了A1帧为目标帧,然后通过步骤514消减A1帧的码率m;再通过步骤516将m按前述规则分配给剩下的视频帧A2、A3、A4……A10中的一个或者多个。然后对视频帧A2、A3、A4……A10进入下一轮循环,当然,如果有新的视频帧,也加入下一轮循环。A1帧被消减码率后,则可以采用前述方式对A1帧进行编码,编码后可以输出。
对于视频帧A2、A3、A4……A10,比如通过步骤512确认A2帧不是目标帧,则可以对该目标帧按照前述方式编码,然后输出。视频帧A3、A4……A10进入下一轮循环。
如上述的循环处理过程,不断将获取到的待编码的视频帧进行处理,直至视频会议结束。
本申请实施例中,对于视频发送端在视频会议中产生的待编码视频帧,可以先判断其是否为场景切换类型的视频帧,如果该待编码视频帧是场景切换类型的视频帧,则削减该视频帧的码率,然后将削减的该部分码率分配给其他待编码视频,然后再对下一个待编码视频执行上述过程,如此,由于在视频帧的处理过程中,将本身就是场景切换类型的视频帧,或者被分配了新的码率后成为了场景切换类型的视频帧,都会将上述视频帧的码率削减,分配给其他帧,比如待编码视频中的正常视频帧,如此,把场景切换类型的视频帧的码率减少,把正常视频帧的码率增加,可以尽量保证整体码率变化较小,在现在评估视频质量为测试一段帧序列的评估机制下,本申请实施例的该种方式对于视频质量的评估并不会降低很多,还能避免由于场景切换类型的视频帧的帧率过大,导致峰值带宽需求高的问题,能够在保证视频质量基本不变的情况下,降低峰值带宽、降低卡帧率,使用户体验更好。另外,如果基于流畅度参数和削减后的剩余码率,调整该目标帧的量化参数,使在对该目标帧进行编码时,可以在降低该目标帧的码率的情况下,使编码后的视频帧能尽量清晰,能进一步实现保证清晰度的条件下使得卡顿率将低的效果。
参照图7,其示出了本申请实施例的一种视频直播数据的处理方法的步骤流程图,应用于视频发送端。该方法包括:步骤520-步骤526。
步骤520,获取视频直播数据中的待编码视频帧;
本申请实施例中,如果用户1要进行直播,其他用户观看该用户A的直播,则该用户1可以使用某个视频客户端A发起直播,直播的数据通过如图1的架构的服务端发送给观看直播的一个或多个其他用户的视频客户端B。那么在视频直播的过程中,对于该视频客户端A的摄像头采集的视频数据、共享桌面的视频数据或者共享窗口的视频数据,本申请实施例则可以获取上述视频数据的中的视频帧作为待编码视频帧,然后执行后续步骤后,将编码后的视频数据发送到服务端。服务端再将编码后的视频数据发送到观看该视频直播的观看方的视频客户端。将编码后的视频数据发送到观看方的视频客户端的具体方式本申请实施例不对其加以限定。
步骤522,确定所述待编码视频帧中的目标帧;所述目标帧包括场景切换类型的视频帧;
步骤524,削减所述目标帧的码率;
步骤526,将削减的码率分配给除所述目标帧之外的至少一个待编码视频帧,并执行确定所述待编码视频帧中的目标帧的步骤。
可选地,在步骤524之后,可以还包括:
步骤528,基于削减后剩余的码率,对所述目标帧进行编码;
可选地,在本申请一实施例中,在步骤520之前,还可以包括:
步骤E10,获取流畅度参数;
本步骤可以参照前述步骤201-202,或者步骤203-204的方式获取流畅度参数,在此不再详述。
可选地,在本申请一实施例中,步骤步骤528包括:子步骤5281-5282;
子步骤5281,根据所述流畅度参数以及削减后的剩余码率,调整针对所述目标帧的量化参数;
子步骤5282,根据所述量化参数,对所述削减视频帧进行编码。
子步骤5281-5282可以参照前述步骤240-250的描述,在此不再详述。
当然,在本申请实施例中,还可以直接基于削减后的剩余码率,计算该qp,然后进行编码。
需要说明的是,如果视频直播结束,则可以不再执行上述步骤。
本申请实施例中,对于视频发送端进行视频直播过程中产生的待编码视频帧,可以先判断其是否为场景切换类型的视频帧,如果该待编码视频帧是场景切换类型的视频帧,则削减该视频帧的码率,然后将削减的该部分码率分配给其他待编码视频,然后再对下一个待编码视频执行上述过程,如此,由于在视频帧的处理过程中,将本身就是场景切换类型的视频帧,或者被分配了新的码率后成为了场景切换类型的视频帧,都会将上述视频帧的码率削减,分配给其他帧,比如待编码视频中的正常视频帧,如此,把场景切换类型的视频帧的码率减少,把正常视频帧的码率增加,可以尽量保证整体码率变化较小,在现在评估视频质量为测试一段帧序列的评估机制下,本申请实施例的该种方式对于视频质量的评估并不会降低很多,还能避免由于场景切换类型的视频帧的帧率过大,导致峰值带宽需求高的问题,能够在保证视频质量基本不变的情况下,降低峰值带宽、降低卡帧率,使用户体验更好。另外,如果基于流畅度参数和削减后的剩余码率,调整该目标帧的量化参数,使在对该目标帧进行编码时,可以在降低该目标帧的码率的情况下,使编码后的视频帧能尽量清晰,能进一步实现保证清晰度的条件下使得卡顿率将低的效果。
参照图8,其示出了本申请实施例的一种视频帧编码装置实施例的结构框图,应用于视频发送端。该装置包括:
第一视频帧获取模块610,用于获取待编码视频帧;
第一帧检测模块612,用于确定所述待编码视频帧中的目标帧;所述目标帧包括场景切换类型的视频帧;
第一码率削减模块613,用于削减所述目标帧的码率;
第一量化参数调整模块614,用于根据预设的流畅度参数以及削减后的剩余码率,调整针对所述目标帧的量化参数;
第一编码模块615,用于根据所述量化参数,对所述削减视频帧进行编码;
第一码率再分配模块616,用于将削减的码率分配给除所述目标帧之外的至少一个待编码视频帧,并进入所述第一帧检测模块。
可选地,所述第一帧检测模块包括:
帧检测子模块,用于根据所述预设的流畅度参数,确定所述待编码视频帧中的目标帧。
可选地,所述帧检测子模块包括:
复杂度获取子模块,用于获取所述待编码视频帧的单帧复杂度,以及所述待编码视频帧的平均复杂度;
第一帧检测子模块,用于根据所述单帧复杂度、所述平均复杂度、所述流畅度参数,确定所述待编码视频帧中的目标帧。
可选地,所述第一帧检测子模块,包括:
复杂度比较子模块,用于根据所述单帧复杂度与所述流畅度参数的第一乘积,与所述平均复杂度与预设系数的第二乘积之间的比较结果,确定所述待编码视频帧中的目标帧。
可选地,所述复杂度比较子模块具体用于:
在所述第一乘积大于所述第二乘积的情况下,确定所述待编码视频帧为目标帧;
在所述第一乘积小于或等于所述第二乘积的情况下,确定所述待编码视频帧为正常视频帧。
可选地,所述第一码率削减模块包括:
帧类型确定子模块,用于确定所述目标帧的帧类型;其中,不同的帧类型对应不同的码率再分配模型;
码率削减量确定模块,用于根据所述目标帧的削减前码率、所述单帧复杂度、所述平均复杂度以及所述帧类型对应的码率再分配模型,确定所述目标帧的码率削减量。
可选地,所述第一量化参数调整模块,包括:
偏移参数确定子模块,用于根据所述流畅度参数,确定量化偏移参数;
范围值确定模块,用于根据所述量化偏移参数,调整所述量化参数的范围值;
第一量化参数确定模块,用于根据所述目标帧的单帧复杂度和削减后的剩余码率,确定第一量化参数;
量化参数钳位模块,用于根据所述范围值,调整所述第一量化参数,获得最终的量化参数。
可选地,所述偏移参数确定子模块,具体用于:
获取复杂度比例因子,所述复杂度比例因子为目标帧的单帧复杂度与所述待编码视频帧的平均复杂度之比;
将所述流畅度参数和所述复杂度比例因子,输入预设的偏移参数确定模型,确定所述量化偏移参数。
可选地,所述第一量化参数确定模块具体用于:
将所述单帧复杂度和所述剩余码率,输入预设的码控模型,确定所述第一量化参数。
可选地,还包括:
跳帧判断模块,用于在所述削减视频帧的剩余码率大于跳帧阈值的情况下,跳过所述削减视频帧对应的目标帧;在所述削减视频帧的剩余码率小于或等于跳帧阈值的情况下,执行第一量化参数调整模块。
可选地,还包括:
流畅度控件展示模块,用于展示流畅度参数输入控件;
流畅度参数获取模块,用于响应于对所述流畅度参数输入控件的输入操作,获取流畅度参数。
可选地,所述流畅度参数输入控件为滑动控件,所述输入操作为滑动操作;或者所述流畅度参数输入控件为输入框,所述输入操作为在所述输入框中进行输入。
可选地,还包括:
网络环境获取模块,用于获取网络环境信息;
流畅度确定模块,用于根据所述网络环境信息,确定所述流畅度参数。
本申请实施例中,首先,提出了流畅度参数的概念,该流畅度参数可以作为接口提供给用户进行操作,如前述流畅度参数控件与流畅度参数的输入接口,用户可以通过该流畅度参数控件实现清晰模式和流畅模式的无极滑动。
其次,对于一个待编码视频帧,先判断其是否为场景切换类型的视频帧,如果该待编码视频帧是场景切换类型的视频帧,则削减该视频帧的码率,然后将削减的该部分码率分配给其他待编码视频,然后再对下一个待编码视频执行上述过程,如此,由于在视频帧的处理过程中,将本身就是场景切换类型的视频帧,或者被分配了新的码率后成为了场景切换类型的视频帧,都会将上述视频帧的码率削减,分配给其他帧,比如待编码视频中的正常视频帧,如此,把场景切换类型的视频帧的码率减少,把正常视频帧的码率增加,可以尽量保证整体码率变化较小,在现在评估视频质量为测试一段帧序列的评估机制下,本申请实施例的该种方式对于视频质量的评估并不会降低很多,能够尽量保证清晰度的条件下使得卡顿率将低。
再次,由于基于流畅度参数和削减后的剩余码率,调整该目标帧的量化参数,使在对该目标帧进行编码时,可以在降低该目标帧的码率的情况下,使编码后的视频帧能尽量清晰,能进一步实现保证清晰度的条件下使得卡顿率将低的效果。
另外,本申请实施例可以应用于视频发送端,在视频源头,将视频帧进行上述处理,使发送出去的视频帧能够尽量平滑,从而在视频源头,在视频会议等需要低延迟的场景下,实现保证清晰度的条件下使得卡顿率将低的效果。该低延迟可以理解为延迟小于预设延迟阈值,该延迟阈值可以根据实际需求设定。
参照图9,其示出了本申请实施例的一种码率控制装置实施例的结构框图,应用于视频发送端。该装置包括:
第二视频帧获取模块621,用于获取待编码视频帧;
第二帧检测模块622,用于确定所述待编码视频帧中的目标帧;所述目标帧包括场景切换类型的视频帧;
第二码率削减模块623,用于削减所述目标帧的码率;
第二码率再分配模块624,用于将削减的码率分配给除所述目标帧之外的至少一个待编码视频帧,并执行第二帧检测模块。
可选地,还包括:
第二编码模块,用于基于削减后剩余的码率,对所述目标帧进行编码;
可选地,还包括:
第一流畅度获取模块,用于获取流畅度参数;
所述第二编码模块625还用于,根据所述流畅度参数以及削减后的剩余码率,调整针对所述目标帧的量化参数;以及根据所述量化参数,对所述削减视频帧进行编码。
本申请实施例的其他功能模块与前述实施例类似,在此不再详述。
本申请实施例中,对于一个待编码视频帧,先判断其是否为场景切换类型的视频帧,如果该待编码视频帧是场景切换类型的视频帧,则削减该视频帧的码率,然后将削减的该部分码率分配给其他待编码视频,然后再对下一个待编码视频执行上述过程,如此,由于在视频帧的处理过程中,将本身就是场景切换类型的视频帧,或者被分配了新的码率后成为了场景切换类型的视频帧,都会将上述视频帧的码率削减,分配给其他帧,比如待编码视频中的正常视频帧,如此,把场景切换类型的视频帧的码率减少,把正常视频帧的码率增加,可以尽量保证整体码率变化较小,在现在评估视频质量为测试一段帧序列的评估机制下,本申请实施例的该种方式对于视频质量的评估并不会降低很多,能够尽量保证清晰度的条件下使得卡顿率将低。
参照图10,其示出了本申请实施例的一种视频帧编码装置实施例的结构框图,应用于服务端。该装置包括:
第三获取模块631,用于获取视频发送端发送的第一视频流,以及获取视频接收端的流畅度参数;
解码模块632,用于解码所述第一视频流,获取待编码视频帧;
第三帧检测模块633,用于确定所述待编码视频帧中的目标帧;所述目标帧包括场景切换类型的视频帧;
第三码率削减模块634,用于削减所述目标帧的码率;
第三量化参数调整模块635,用于根据预设的流畅度参数以及削减后的剩余码率,调整针对所述目标帧的量化参数;
第三编码模块636,用于根据所述量化参数,对所述削减视频帧进行编码,并向视频接收端发送编码后的第二视频流;
第三码率再分配模块637,用于将削减的码率分配给除所述目标帧之外的至少一个待编码视频帧,并执行第三帧检测模块。
需要说明的是,本申请实施例的其他功能模块可以参照前述实施例的描述,在此不再详述。
本申请实施例中,首先,提出了流畅度参数的概念,该流畅度参数可以作为接口提供给用户进行操作,如前述流畅度参数控件与流畅度参数的输入接口,用户可以通过该流畅度参数控件实现清晰模式和流畅模式的无极滑动。
其次,对于一个待编码视频帧,先判断其是否为场景切换类型的视频帧,如果该待编码视频帧是场景切换类型的视频帧,则削减该视频帧的码率,然后将削减的该部分码率分配给其他待编码视频,然后再对下一个待编码视频执行上述过程,如此,由于在视频帧的处理过程中,将本身就是场景切换类型的视频帧,或者被分配了新的码率后成为了场景切换类型的视频帧,都会将上述视频帧的码率削减,分配给其他帧,比如待编码视频中的正常视频帧,如此,把场景切换类型的视频帧的码率减少,把正常视频帧的码率增加,可以尽量保证整体码率变化较小,在现在评估视频质量为测试一段帧序列的评估机制下,本申请实施例的该种方式对于视频质量的评估并不会降低很多,能够尽量保证清晰度的条件下使得卡顿率将低。
再次,由于基于流畅度参数和削减后的剩余码率,调整该目标帧的量化参数,使在对该目标帧进行编码时,可以在降低该目标帧的码率的情况下,使编码后的视频帧能尽量清晰,能进一步实现保证清晰度的条件下使得卡顿率将低的效果。
另外,本申请实施例可以应用于服务端,在服务端,将视频帧进行上述处理,使发送出去的视频帧能够尽量平滑,从而使得视频接收端能够在其流畅度的需求的情况下,在尽量保证视频清晰度的情况下降低卡帧率。
参照图11,其示出了本申请实施例的一种视频会议数据的处理装置实施例的结构框图,应用于视频发送端。该装置包括:
第四获取模块641,用于获取视频会议数据中的待编码视频帧;
第四帧检测模块642,用于确定所述待编码视频帧中的目标帧;所述目标帧包括场景切换类型的视频帧;
第四码率削减模块643,用于削减所述目标帧的码率;
第四码率再分配模块644,用于将削减的码率分配给除所述目标帧之外的至少一个待编码视频帧,并执行所述第四帧检测模块。
可选地,还包括:
第四编码模块,用于基于消减削减后剩余的码率,对所述目标帧进行编码;
可选地,还包括:
第四编码模块,用于基于削减后剩余的码率,对所述目标帧进行编码;
可选地,所述第四编码模块,包括:
第四量化参数调整子模块,用于根据预设的流畅度参数以及削减后的剩余码率,调整针对所述目标帧的量化参数;
第四编码子模块,用于根据所述量化参数,对所述削减视频帧进行编码。
可选地,所述第四量化参数调整子模块,还用于根据所述流畅度参数,确定量化偏移参数;根据所述量化偏移参数,调整所述量化参数的范围值;根据所述目标帧的单帧复杂度和削减后的剩余码率,确定第一量化参数;根据所述范围值,调整所述第一量化参数,获得最终的量化参数。
可选地,还包括:
第三流畅度获取模块,用于获取流畅度参数;
可选地,还包括:
第四控件展示模块,用于展示流畅度参数输入控件;
第四流畅度获取模块,用于响应于对所述流畅度参数输入控件的输入操作,获取流畅度参数。
可选地,所述流畅度参数输入控件为滑动控件,所述输入操作为滑动操作;或者所述流畅度参数输入控件为输入框,所述输入操作为在所述输入框中进行输入。
可选地,第四帧检测模块642还用于,根据预设的流畅度参数,确定所述待编码视频帧中的目标帧。
可选地,所述第四帧检测模块包括:
第四帧检测子模块,用于根据预设的流畅度参数,确定所述待编码视频帧中的目标帧。
所述第四帧检测子模块具体用于:获取所述待编码视频帧的单帧复杂度,以及所述待编码视频帧的平均复杂度;根据所述单帧复杂度、所述平均复杂度、所述流畅度参数,确定所述待编码视频帧中的目标帧。
可选地,所述第四码率削减模块643,包括:
第四帧类型确定子模块,用于确定所述目标帧的帧类型;其中,不同的帧类型对应不同的码率再分配模型;
第四码率削减量确定模块,用于根据所述目标帧的削减前码率、所述单帧复杂度、所述平均复杂度以及所述帧类型对应的码率再分配模型,确定所述目标帧的码率削减量。
可选地,还包括:
第四跳帧判断模块,用于在所述削减视频帧的剩余码率大于跳帧阈值的情况下,跳过所述削减视频帧对应的目标帧;在所述削减视频帧的剩余码率小于或等于跳帧阈值的情况下,执行第一量化参数调整模块。
需要说明的是,本申请实施例的其他功能模块可以参照前述实施例的描述,在此不再详述。
本申请实施例中,对于视频发送端在视频会议中产生的待编码视频帧,可以先判断其是否为场景切换类型的视频帧,如果该待编码视频帧是场景切换类型的视频帧,则削减该视频帧的码率,然后将削减的该部分码率分配给其他待编码视频,然后再对下一个待编码视频执行上述过程,如此,由于在视频帧的处理过程中,将本身就是场景切换类型的视频帧,或者被分配了新的码率后成为了场景切换类型的视频帧,都会将上述视频帧的码率削减,分配给其他帧,比如待编码视频中的正常视频帧,如此,把场景切换类型的视频帧的码率减少,把正常视频帧的码率增加,可以尽量保证整体码率变化较小,在现在评估视频质量为测试一段帧序列的评估机制下,本申请实施例的该种方式对于视频质量的评估并不会降低很多,还能避免由于场景切换类型的视频帧的帧率过大,导致峰值带宽需求高的问题,能够在保证视频质量基本不变的情况下,降低峰值带宽、降低卡帧率,使用户体验更好。另外,如果基于流畅度参数和削减后的剩余码率,调整该目标帧的量化参数,使在对该目标帧进行编码时,可以在降低该目标帧的码率的情况下,使编码后的视频帧能尽量清晰,能进一步实现保证清晰度的条件下使得卡顿率将低的效果。
参照图12,其示出了本申请实施例的一种视频直播数据的处理装置实施例的结构框图,应用于视频发送端。该装置包括:
第五获取模块651,用于获取视频直播数据中的待编码视频帧;
第五帧检测模块652,用于确定所述待编码视频帧中的目标帧;所述目标帧包括场景切换类型的视频帧;
第五码率削减模块653,用于削减所述目标帧的码率;
第五码率再分配模块654,用于将削减的码率分配给除所述目标帧之外的至少一个待编码视频帧,并执行所述第五帧检测模块。
可选地,还包括:
第五编码模块,用于基于削减后剩余的码率,对所述目标帧进行编码;
可选地,还包括:
第三流畅度获取模块,用于获取流畅度参数;
所述第五编码模块还用于,根据所述流畅度参数以及削减后的剩余码率,调整针对所述目标帧的量化参数;以及根据所述量化参数,对所述削减视频帧进行编码。
需要说明的是,本申请实施例的其他功能模块参照前述实施例的描述,在此不再详述。
本申请实施例中,对于视频发送端在视频会议中产生的待编码视频帧,可以先判断其是否为场景切换类型的视频帧,如果该待编码视频帧是场景切换类型的视频帧,则削减该视频帧的码率,然后将削减的该部分码率分配给其他待编码视频,然后再对下一个待编码视频执行上述过程,如此,由于在视频帧的处理过程中,将本身就是场景切换类型的视频帧,或者被分配了新的码率后成为了场景切换类型的视频帧,都会将上述视频帧的码率削减,分配给其他帧,比如待编码视频中的正常视频帧,如此,把场景切换类型的视频帧的码率减少,把正常视频帧的码率增加,可以尽量保证整体码率变化较小,在现在评估视频质量为测试一段帧序列的评估机制下,本申请实施例的该种方式对于视频质量的评估并不会降低很多,还能避免由于场景切换类型的视频帧的帧率过大,导致峰值带宽需求高的问题,能够在保证视频质量基本不变的情况下,降低峰值带宽、降低卡帧率,使用户体验更好。另外,如果基于流畅度参数和削减后的剩余码率,调整该目标帧的量化参数,使在对该目标帧进行编码时,可以在降低该目标帧的码率的情况下,使编码后的视频帧能尽量清晰,能进一步实现保证清晰度的条件下使得卡顿率将低的效果。
需要说明的是,本申请实施例的装置部分的执行原理与方法实施例的执行原理类似,其执行过程参照方法实施例的描述,在此不再详述。
本申请实施例还提供了一种非易失性可读存储介质,该存储介质中存储有一个或多个模块(programs),该一个或多个模块被应用在设备时,可以使得该设备执行本申请实施例中各方法步骤的指令(instructions)。
本申请实施例提供了一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得电子设备执行如上述实施例中一个或多个所述的方法。本申请实施例中,所述电子设备包括终端设备、服务端(集群)等各类型的设备。
本公开的实施例可被实现为使用任意适当的硬件,固件,软件,或及其任意组合进行想要的配置的装置,该装置可包括终端设备、服务端(集群)等电子设备。图11示意性地示出了可被用于实现本申请实施例中所述的各个实施例的示例性装置700。
对于一个实施例,图11示出了示例性装置700,该装置具有一个或多个处理器702、被耦合到(一个或多个)处理器702中的至少一个的控制模块(芯片组)704、被耦合到控制模块704的存储器706、被耦合到控制模块704的非易失性存储器(NVM)/存储设备708、被耦合到控制模块704的一个或多个输入/输出设备710,以及被耦合到控制模块704的网络接口712。
处理器702可包括一个或多个单核或多核处理器,处理器702可包括通用处理器或专用处理器(例如图形处理器、应用处理器、基频处理器等)的任意组合。在一些实施例中,装置700能够作为本申请实施例中所述终端设备、服务端(集群)等设备。
在一些实施例中,装置700可包括具有指令714的一个或多个计算机可读介质(例如,存储器706或NVM/存储设备708)以及与该一个或多个计算机可读介质相合并被配置为执行指令714以实现模块从而执行本公开中所述的动作的一个或多个处理器702。
对于一个实施例,控制模块704可包括任意适当的接口控制器,以向(一个或多个)处理器702中的至少一个和/或与控制模块704通信的任意适当的设备或组件提供任意适当的接口。
控制模块704可包括存储器控制器模块,以向存储器706提供接口。存储器控制器模块可以是硬件模块、软件模块和/或固件模块。
存储器706可被用于例如为装置700加载和存储数据和/或指令714。对于一个实施例,存储器706可包括任意适当的易失性存储器,例如,适当的DRAM。在一些实施例中,存储器706可包括双倍数据速率类型四同步动态随机存取存储器(DDR4SDRAM)。
对于一个实施例,控制模块704可包括一个或多个输入/输出控制器,以向NVM/存储设备708及(一个或多个)输入/输出设备710提供接口。
例如,NVM/存储设备708可被用于存储数据和/或指令714。NVM/存储设备708可包括任意适当的非易失性存储器(例如,闪存)和/或可包括任意适当的(一个或多个)非易失性存储设备(例如,一个或多个硬盘驱动器(HDD)、一个或多个光盘(CD)驱动器和/或一个或多个数字通用光盘(DVD)驱动器)。
NVM/存储设备708可包括在物理上作为装置700被安装在其上的设备的一部分的存储资源,或者其可被该设备访问可不必作为该设备的一部分。例如,NVM/存储设备708可通过网络经由(一个或多个)输入/输出设备710进行访问。
(一个或多个)输入/输出设备710可为装置700提供接口以与任意其他适当的设备通信,输入/输出设备710可以包括通信组件、音频组件、传感器组件等。网络接口712可为装置700提供接口以通过一个或多个网络通信,装置700可根据一个或多个无线网络标准和/或协议中的任意标准和/或协议来与无线网络的一个或多个组件进行无线通信,例如接入基于通信标准的无线网络,如WiFi、2G、3G、4G、5G等,或它们的组合进行无线通信。
对于一个实施例,(一个或多个)处理器702中的至少一个可与控制模块704的一个或多个控制器(例如,存储器控制器模块)的逻辑封装在一起。对于一个实施例,(一个或多个)处理器702中的至少一个可与控制模块704的一个或多个控制器的逻辑封装在一起以形成***级封装(SiP)。对于一个实施例,(一个或多个)处理器702中的至少一个可与控制模块704的一个或多个控制器的逻辑集成在同一模具上。对于一个实施例,(一个或多个)处理器702中的至少一个可与控制模块704的一个或多个控制器的逻辑集成在同一模具上以形成片上***(SoC)。
在各个实施例中,装置700可以但不限于是:服务端、台式计算设备或移动计算设备(例如,膝上型计算设备、手持计算设备、平板电脑、上网本等)等终端设备。在各个实施例中,装置700可具有更多或更少的组件和/或不同的架构。例如,在一些实施例中,装置700包括一个或多个摄像机、键盘、液晶显示器(LCD)屏幕(包括触屏显示器)、非易失性存储器端口、多个天线、图形芯片、专用集成电路(ASIC)和扬声器。
其中,检测装置中可采用主控芯片作为处理器或控制模块,传感器数据、位置信息等存储到存储器或NVM/存储设备中,传感器组可作为输入/输出设备,通信接口可包括网络接口。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本申请实施例是参照根据本申请实施例的方法、终端设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种视频帧编码方法、装置、电子设备和存储介质,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (36)
1.一种视频帧编码方法,其特征在于,所述方法包括:
获取待编码视频帧;
确定所述待编码视频帧中的目标帧;所述目标帧包括场景切换类型的视频帧;
削减所述目标帧的码率;
根据预设的流畅度参数以及削减后的剩余码率,调整针对所述目标帧的量化参数;
根据所述量化参数,对所述削减视频帧进行编码;
将削减的码率分配给除所述目标帧之外的至少一个待编码视频帧,并执行确定所述待编码视频帧中的目标帧的步骤。
2.根据权利要求1所述的方法,其特征在于,所述确定所述待编码视频帧中的目标帧,包括:
根据所述预设的流畅度参数,确定所述待编码视频帧中的目标帧。
3.根据权利要求2所述的方法,其他组在于,所述根据所述预设的流畅度参数,确定所述待编码视频帧中的目标帧,包括:
获取所述待编码视频帧的单帧复杂度,以及所述待编码视频帧的平均复杂度;
根据所述单帧复杂度、所述平均复杂度、所述流畅度参数,确定所述待编码视频帧中的目标帧。
4.根据权利要求3所述的方法,其他组在于,根据所述单帧复杂度、所述平均复杂度、所述流畅度参数,确定所述待编码视频帧中的目标帧,包括:
根据所述单帧复杂度与所述流畅度参数的第一乘积,与所述平均复杂度与预设系数的第二乘积之间的比较结果,确定所述待编码视频帧中的目标帧。
5.根据权利要求4所述的方法,其他组在于,所述根据所述单帧复杂度与所述流畅度参数的第一乘积,与所述平均复杂度与预设系数的第二乘积之间的比较结果,确定所述待编码视频帧中的目标帧,包括:
在所述第一乘积大于所述第二乘积的情况下,确定所述待编码视频帧为目标帧;
在所述第一乘积小于或等于所述第二乘积的情况下,确定所述待编码视频帧为正常视频帧。
6.根据权利要求3所述的方法,其特征在于,所述削减所述目标帧的码率,包括:
确定所述目标帧的帧类型;其中,不同的帧类型对应不同的码率再分配模型;
根据所述目标帧的削减前码率、所述单帧复杂度、所述平均复杂度以及所述帧类型对应的码率再分配模型,确定所述目标帧的码率削减量。
7.根据权利要求1所述的方法,其特征在于,所述根据预设的流畅度参数以及削减后的剩余码率,调整针对所述目标帧的量化参数,包括:
根据所述流畅度参数,确定量化偏移参数;
根据所述量化偏移参数,调整所述量化参数的范围值;
根据所述目标帧的单帧复杂度和削减后的剩余码率,确定第一量化参数;
根据所述范围值,调整所述第一量化参数,获得最终的量化参数。
8.根据权利要求7所述的方法,其特征在于,所述根据所述目标帧的单帧复杂度和削减后的剩余码率,确定第一量化参数,包括:
将所述单帧复杂度和所述剩余码率,输入预设的码控模型,确定所述第一量化参数。
9.根据权利要求1所述的方法,其特征在于,还包括:
在所述削减视频帧的剩余码率大于跳帧阈值的情况下,跳过所述削减视频帧对应的目标帧;
在所述削减视频帧的剩余码率小于或等于跳帧阈值的情况下,执行根据预设的流畅度参数以及削减后的剩余码率,调整针对所述目标帧的量化参数的步骤。
10.根据权利要求1所述的方法,其特征在于,还包括:
展示流畅度参数输入控件;
响应于对所述流畅度参数输入控件的输入操作,获取流畅度参数。
11.根据权利要求10所述的方法,其特征在于,所述流畅度参数输入控件为滑动控件,所述输入操作为滑动操作;
或者所述流畅度参数输入控件为输入框,所述输入操作为在所述输入框中进行输入。
12.根据权利要求1所述的方法,其特征在于,还包括:
获取网络环境信息;
根据所述网络环境信息,确定所述流畅度参数。
13.一种码率控制方法,其特征在于,所述方法包括:
获取待编码视频帧;
确定所述待编码视频帧中的目标帧;所述目标帧包括场景切换类型的视频帧;
削减所述目标帧的码率;
将削减的码率分配给除所述目标帧之外的至少一个待编码视频帧,并执行确定所述待编码视频帧中的目标帧的步骤。
14.根据权利要求13所述的方法,其特征在于,还包括:
基于削减后剩余的码率,对所述目标帧进行编码。
15.根据权利要求14所述的方法,其特征在于,还包括:
获取流畅度参数;
所述基于削减后剩余的码率,对所述目标帧进行编码,包括:
根据所述流畅度参数以及削减后的剩余码率,调整针对所述目标帧的量化参数;
根据所述量化参数,对所述削减视频帧进行编码。
16.一种视频帧编码方法,其特征在于,所述方法包括:
获取视频发送端发送的第一视频流,以及获取视频接收端的流畅度参数;
解码所述第一视频流,获取待编码视频帧;
确定所述待编码视频帧中的目标帧;所述目标帧包括场景切换类型的视频帧;
削减所述目标帧的码率;
根据预设的流畅度参数以及削减后的剩余码率,调整针对所述目标帧的量化参数;
根据所述量化参数,对所述削减视频帧进行编码,并向视频接收端发送编码后的第二视频流;
将削减的码率分配给除所述目标帧之外的至少一个待编码视频帧,并执行确定所述待编码视频帧中的目标帧的步骤。
17.一种视频会议数据的处理方法,其特征在于,所述方法包括:
获取视频会议数据中的待编码视频帧;
确定所述待编码视频帧中的目标帧;所述目标帧包括场景切换类型的视频帧;
削减所述目标帧的码率;
将削减的码率分配给除所述目标帧之外的至少一个待编码视频帧,并执行确定所述待编码视频帧中的目标帧的步骤。
18.根据权利要求17所述的方法,其特征在于,还包括:
基于消减削减后剩余的码率,对所述目标帧进行编码。
19.根据权利要求18所述的方法,其特征在于,所述基于削减后剩余的码率,对所述目标帧进行编码,包括:
根据预设的流畅度参数以及削减后的剩余码率,调整针对所述目标帧的量化参数;
根据所述量化参数,对所述削减视频帧进行编码。
20.根据权利要求19所述的方法,其特征在于,所述根据预设的流畅度参数以及削减后的剩余码率,调整针对所述目标帧的量化参数,包括:
根据所述流畅度参数,确定量化偏移参数;
根据所述量化偏移参数,调整所述量化参数的范围值;
根据所述目标帧的单帧复杂度和削减后的剩余码率,确定第一量化参数;
根据所述范围值,调整所述第一量化参数,获得最终的量化参数。
21.根据权利要求17所述的方法,其特征在于,所述确定所述待编码视频帧中的目标帧,包括:
根据预设的流畅度参数,确定所述待编码视频帧中的目标帧。
22.根据权利要求18-21任一项所述的方法,其特征在于,还包括:
展示流畅度参数输入控件;
响应于对所述流畅度参数输入控件的输入操作,获取流畅度参数。
23.一种视频直播数据的处理方法,其特征在于,所述方法包括:
获取视频直播数据中的待编码视频帧;
确定所述待编码视频帧中的目标帧;所述目标帧包括场景切换类型的视频帧;
削减所述目标帧的码率;
将削减的码率分配给除所述目标帧之外的至少一个待编码视频帧,并执行确定所述待编码视频帧中的目标帧的步骤。
24.一种视频帧编码装置,其特征在于,所述装置包括:
第一视频帧获取模块,用于获取待编码视频帧;
第一帧检测模块,用于确定所述待编码视频帧中的目标帧;所述目标帧包括场景切换类型的视频帧;
第一码率削减模块,用于削减所述目标帧的码率;
第一量化参数调整模块,用于根据预设的流畅度参数以及削减后的剩余码率,调整针对所述目标帧的量化参数;
第一编码模块,用于根据所述量化参数,对所述削减视频帧进行编码;
第一码率再分配模块,用于将削减的码率分配给除所述目标帧之外的至少一个待编码视频帧,并进入所述第一帧检测模块。
25.根据权利要求24所述的装置,其特征在于,所述第一帧检测模块包括:
帧检测子模块,用于根据所述预设的流畅度参数,确定所述待编码视频帧中的目标帧。
26.根据权利要求25所述的装置,其他组在于,所述帧检测子模块包括:
复杂度获取子模块,用于获取所述待编码视频帧的单帧复杂度,以及所述待编码视频帧的平均复杂度;
第一帧检测子模块,用于根据所述单帧复杂度、所述平均复杂度、所述流畅度参数,确定所述待编码视频帧中的目标帧。
27.根据权利要求26所述的装置,其特征在于,所述第一码率削减模块包括:
帧类型确定子模块,用于确定所述目标帧的帧类型;其中,不同的帧类型对应不同的码率再分配模型;
码率削减量确定模块,用于根据所述目标帧的削减前码率、所述单帧复杂度、所述平均复杂度以及所述帧类型对应的码率再分配模型,确定所述目标帧的码率削减量。
28.根据权利要求24所述的装置,其特征在于,还包括:
跳帧判断模块,用于在所述削减视频帧的剩余码率大于跳帧阈值的情况下,跳过所述削减视频帧对应的目标帧;在所述削减视频帧的剩余码率小于或等于跳帧阈值的情况下,执行第一量化参数调整模块。
29.根据权利要求24所述的装置,其特征在于,还包括:
流畅度控件展示模块,用于展示流畅度参数输入控件;
流畅度参数获取模块,用于响应于对所述流畅度参数输入控件的输入操作,获取流畅度参数。
30.根据权利要求24所述的装置,其特征在于,所述流畅度参数输入控件为滑动控件,所述输入操作为滑动操作;
或者所述流畅度参数输入控件为输入框,所述输入操作为在所述输入框中进行输入。
31.一种码率控制装置,其特征在于,所述装置包括:
第二视频帧获取模块,用于获取待编码视频帧;
第二帧检测模块,用于确定所述待编码视频帧中的目标帧;所述目标帧包括场景切换类型的视频帧;
第二码率削减模块,用于削减所述目标帧的码率;
第二码率再分配模块,用于将削减的码率分配给除所述目标帧之外的至少一个待编码视频帧,并执行第二帧检测模块。
32.一种视频帧编码装置,其特征在于,所述装置包括:
第三获取模块,用于获取视频发送端发送的第一视频流,以及获取视频接收端的流畅度参数;
解码模块,用于解码所述第一视频流,获取待编码视频帧;
第三帧检测模块,用于确定所述待编码视频帧中的目标帧;所述目标帧包括场景切换类型的视频帧;
第三码率削减模块,用于削减所述目标帧的码率;
第三量化参数调整模块,用于根据预设的流畅度参数以及削减后的剩余码率,调整针对所述目标帧的量化参数;
第三编码模块,用于根据所述量化参数,对所述削减视频帧进行编码,并向视频接收端发送编码后的第二视频流;
第三码率再分配模块,用于将削减后的码率分配给除所述目标帧之外的至少一个待编码视频帧,并执行第三帧检测模块。
33.一种视频会议数据的处理装置,其特征在于,所述装置包括:
第四获取模块,用于获取视频会议数据中的待编码视频帧;
第四帧检测模块,用于确定所述待编码视频帧中的目标帧;所述目标帧包括场景切换类型的视频帧;
第四码率削减模块,用于削减所述目标帧的码率;
第四码率再分配模块,用于将削减的码率分配给除所述目标帧之外的至少一个待编码视频帧,并执行所述第四帧检测模块。
34.一种视频直播数据的处理装置,其特征在于,所述装置包括:
第五获取模块,用于获取视频直播数据中的待编码视频帧;
第五帧检测模块,用于确定所述待编码视频帧中的目标帧;所述目标帧包括场景切换类型的视频帧;
第五码率削减模块,用于削减所述目标帧的码率;
第五码率再分配模块,用于将削减的码率分配给除所述目标帧之外的至少一个待编码视频帧,并执行所述第五帧检测模块。
35.一种电子设备,其特征在于,包括:处理器;和
存储器,其上存储有可执行代码,当所述可执行代码被执行时,使得所述处理器执行如权利要求1-23中任一项所述的方法。
36.一个或多个机器可读介质,其上存储有可执行代码,当所述可执行代码被执行时,使得处理器执行如权利要求1-23中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110020631.XA CN114745590A (zh) | 2021-01-07 | 2021-01-07 | 视频帧编码方法、装置、电子设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110020631.XA CN114745590A (zh) | 2021-01-07 | 2021-01-07 | 视频帧编码方法、装置、电子设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114745590A true CN114745590A (zh) | 2022-07-12 |
Family
ID=82273878
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110020631.XA Pending CN114745590A (zh) | 2021-01-07 | 2021-01-07 | 视频帧编码方法、装置、电子设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114745590A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108040256A (zh) * | 2017-12-29 | 2018-05-15 | 广州海昇计算机科技有限公司 | 一种基于h.265的码率控制方法、***及装置 |
CN109413427A (zh) * | 2017-08-17 | 2019-03-01 | 腾讯科技(深圳)有限公司 | 一种视频帧编码方法及终端 |
CN109561310A (zh) * | 2017-09-26 | 2019-04-02 | 腾讯科技(深圳)有限公司 | 视频编码处理方法、装置、设备和存储介质 |
CN110381316A (zh) * | 2019-07-17 | 2019-10-25 | 腾讯科技(深圳)有限公司 | 一种视频传输控制方法、装置、设备及存储介质 |
-
2021
- 2021-01-07 CN CN202110020631.XA patent/CN114745590A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109413427A (zh) * | 2017-08-17 | 2019-03-01 | 腾讯科技(深圳)有限公司 | 一种视频帧编码方法及终端 |
CN109561310A (zh) * | 2017-09-26 | 2019-04-02 | 腾讯科技(深圳)有限公司 | 视频编码处理方法、装置、设备和存储介质 |
CN108040256A (zh) * | 2017-12-29 | 2018-05-15 | 广州海昇计算机科技有限公司 | 一种基于h.265的码率控制方法、***及装置 |
CN110381316A (zh) * | 2019-07-17 | 2019-10-25 | 腾讯科技(深圳)有限公司 | 一种视频传输控制方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9071841B2 (en) | Video transcoding with dynamically modifiable spatial resolution | |
KR101643790B1 (ko) | 적응적 비디오 스트리밍용의 가변 비트 레이트 및 동적 해상도를 이용한 다중 비트 레이트 비디오 인코딩 | |
US8687702B2 (en) | Remote transmission and display of video data using standard H.264-based video codecs | |
JP5180294B2 (ja) | ビデオ符号化において、フレームの複雑さ、バッファレベル、およびイントラフレームの位置を利用するバッファベースのレート制御 | |
US9628811B2 (en) | Adaptive group of pictures (AGOP) structure determination | |
US8194729B2 (en) | Apparatus and method for matching compressed video data under wireless fading environment | |
US8290038B1 (en) | Video coding complexity estimation | |
EP2441265B1 (en) | Motion based dynamic resolution multiple bit rate video encoding | |
TWI606722B (zh) | 用於減少視訊編碼及解碼中之延遲的方法、系統及電腦可讀取媒體 | |
CN111277826B (zh) | 一种视频数据处理方法、装置及存储介质 | |
CN108810545B (zh) | 用于视频编码的方法、装置、计算机可读介质及电子设备 | |
US9615098B1 (en) | Adaptive resolution transcoding for optimal visual quality | |
US7016412B1 (en) | System and method for dynamic adaptive decoding of scalable video to balance CPU load | |
US9584832B2 (en) | High quality seamless playback for video decoder clients | |
JP2010501141A (ja) | デジタル映像の可変解像度エンコードおよびデコード技術 | |
WO2013173909A1 (en) | Methods and apparatus for providing a presentation quality signal | |
CN110891177B (zh) | 视频降噪、视频转码中的降噪处理方法、装置和机器设备 | |
US20110211637A1 (en) | Method and system for compressing digital video streams | |
CN114363649B (zh) | 视频处理方法、装置、设备及存储介质 | |
US20130322516A1 (en) | Systems and methods for generating multiple bitrate streams using a single encoding engine | |
WO2017036568A1 (en) | Improved cloud dvr storage | |
US10735773B2 (en) | Video coding techniques for high quality coding of low motion content | |
JP6357542B2 (ja) | マルチパス適応量子化のための方法及び装置 | |
US9467691B2 (en) | Video system for displaying image data, method and computer program | |
CN114745590A (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 |