发明内容
本发明提供的一种码流转换中编码速度和视频质量的自适应联合控制方法,在保证速度的同时,尽可能地提高编码图像质量,同时也可以在保证编码图像质量的同时,尽可能提高编码速度,而且这种控制算法计算复杂度很低,不仅适合各种软件应用,而且也适合硬件的实时工作。
为了达到上述目的,本发明提供了一种码流转换中编码速度和视频质量的自适应联合控制方法,其包含以下步骤:
步骤1、计算编码过程中的实际平均帧率av_fps:
使用逐帧平均的方法,具体计算为:
其中,d_fps为视频帧率,即视频编码输出码流的显示帧率,tcur为当前帧编码的时间,
为最近d_fps帧的平均编码时间,不包括当前帧,tav为最近d_fps帧的平均编码时间,但包括当前帧,由公式(1)计算得到tav后,由
赋值更新
步骤2、计算目标帧率o_fps,即视频编码器的输出帧率:
o_fps=d_fps+fps其他资源开销;
其中,fps其他资源开销表示编码系统其他部分的资源占用的帧率,其值可自行定义;
步骤3、计算编码帧率误差diff_fps:
diff_fps=av_fps-o_fps;
步骤4、自定义编码帧率误差门限,得到编码速度控制级别:
所述的编码速度控制级别从低到高依次定义为:无加速,慢加速,中等加速,快加速,最快加速;
自定义编码帧率误差门限的各个区段,其分别对应上述各个不同的编码速度控制级别,根据步骤3中计算得到的当前编码帧率误差diff_fps的值处于哪个区段的编码帧率误差门限中,对应得到在编码时所采用的编码速度控制级别;
步骤5、根据所采用的编码速度控制级别,以及所定义的编码加速规则,使编码器采用相应的编码加速措施,从而达到编码速度和视频图像质量的联合控制;
所述的编码加速规则是指各个编码速度控制级别应分别对应采用的加速措施,其根据实际情况的编码图像质量和编码速度两者之间的平衡制定;
影响编码速度的因素主要是运动估计模块(具体搜索算法如全搜索、三步搜索等算法)和DCT(离散余弦变换)变换,因此减少这些模块的使用将极大提高编码速度。在不同标准码流转换中,当前图像帧的编码可以利用它被解码时的信息,这些信息将有助于提高编码速度;
所述的编码加速措施包含帧内编码模式的加速措施、宏块跳过模式的加速措施、解码运动矢量的加速措施、大小块搜索模式的加速措施、解码宏块中DCT系数为0的信息减少DCT变换的加速措施和跳帧的加速措施;
步骤6、如果所有图像编码完成,则结束编码控制过程,否则,跳到步骤1继续编码控制。
本发明提供的一种码流转换中编码速度和视频质量的自适应联合控制方法,在保证速度的同时,尽可能地提高编码图像质量,同时也可以在保证编码图像质量的同时,尽可能提高编码速度,而且这种控制算法计算复杂度很低,不仅适合各种软件应用,而且也适合硬件的实时工作。
具体实施方式
以下具体说明本发明的一种具体实施方式:
本发明提供了一种码流转换中编码速度和视频质量的自适应联合控制方法,其包含以下步骤:
步骤1、计算编码过程中的实际平均帧率av_fps:
使用逐帧平均的方法,具体计算为:
其中,d_fps为视频帧率,即视频编码输出码流的显示帧率,t
cur为当前帧编码的时间,
为最近d_fps帧的平均编码时间,不包括当前帧,t
av为最近d_fps帧的平均编码时间,但包括当前帧,由公式(1)计算得到t
av后,由
赋值更新
步骤2、计算目标帧率o_fps,即视频编码器的输出帧率:
o_fps=d_fps+fps其他资源开销;
d_fps为视频帧率,即视频编码输出码流的显示帧率;fps其他资源开销由用户自定义;
步骤3、计算编码帧率误差diff_fps:
diff_fps=av_fps-o_fps;
步骤4、自定义编码帧率误差门限,得到编码速度控制级别:
所述的编码速度控制级别从低到高依次定义为:无加速,慢加速,中等加速,快加速,最快加速。
定义编码帧率误差门限为0,-2,-4,-6,则其组成的各个误差门限区段分别对应上述各个不同的编码速度控制级别,则编码帧率误差diff_fps所处的误差门限区段对应的编码速度控制级别分别为:
无加速:diff_fps≥0;
慢加速:-2≤diff_fps<0;
中等加速:-4≤diff_fps<-2;
快加速:-6≤diff_fps<-4;
最快加速:diff_fps<-6;
步骤5、根据采用的编码速度控制级别,以及所定义的编码加速规则,使编码器采用相应的编码加速措施,从而达到编码速度和视频图像质量的联合控制;
所述的编码加速规则是指各个编码速度控制级别应分别对应采用的加速措施,其根据实际情况的编码图像质量和编码速度两者之间的平衡制定;但是在有些应用过程中更加偏向编码速度,则此时,规则的制定应该倾向编码快速的要求;有些应用过程中更加偏向编码图像质量,则此时,规则的制定应该倾向编码图像质量;
由于所述的编码加速规则在实际应用中可能变化多样,在此仅仅给出一些简单的例子:
1)当加速级别高于中等加速时,应用帧内编码模式的加速措施;
2)当加速级别高于慢加速时,应用宏块跳过模式的加速措施;
3)当加速级别高于中等加速时,应用解码运动矢量的加速措施;
4)当加速级别高于中等加速时,不采用小块搜索模式的加速措施,反之,则采用小块搜索模式的加速措施;
5)当加速级别高于中等加速时,应用解码宏块中DCT系数为0的信息减少DCT变换的加速措施;
6)当加速级别为最快加速时,应用跳帧的加速措施;即,当采用一种加速级别时,将联合使用上述加速措施:
当加速级别为中等加速时,联合应用宏块跳过模式的加速措施和大块搜索模式的加速措施;
当加速级别为快加速时,联合应用帧内编码模式的加速措施,宏块跳过模式的加速措施,解码运动矢量的加速措施,大块搜索模式的加速措施,解码宏块中DCT系数为0的信息减少DCT变换的加速措施;
当加速级别为最快加速时,联合应用帧内编码模式的加速措施,宏块跳过模式的加速措施,解码运动矢量的加速措施,大块搜索模式的加速措施,解码宏块中DCT系数为0的信息减少DCT变换的加速措施,跳帧的加速措施;
所述帧内编码模式的加速措施:如果一个宏块解码时为帧内编码,则说明此宏块包含的高频纹理细节(如人脸处,运动剧烈区域等)很多;在加速级别高时,进行帧内编码,将减少运动搜索,提高编码速度,但帧内编码将产生较多比特开销,在码率恒定的条件下,影响其他宏块的编码图像质量;在加速级别低时,进行帧间编码,将增加运动搜索,降低编码速度,但产生较少比特开销,在码率恒定的条件下,将提高其他宏块的编码图像质量。
所述宏块跳过模式的加速措施:如果一个宏块解码时为宏块跳过模式,则说明此宏块包含的高频纹理细节很少;在加速级别高时,使用宏块跳过模式,将减少运动搜索,提高编码速度,但使用宏块跳过模式的编码图像质量没有直接编码时好;在加速级别低时,不使用宏块跳过模式,将增加运动搜索,降低编码速度,但提高了编码图像质量。
所述解码运动矢量的加速措施:在加速级别高时,使用解码运动矢量,将减少运动搜索,提高编码速度,但使用解码运动矢量的编码图像质量没有使用运动搜索得到的运动矢量的编码图像质量好;在加速级别低时,不使用解码运动矢量,将增加运动搜索,降低编码速度,但提高了编码图像质量。
所述不同大小块搜索模式的加速措施:如果一个宏块解码时为16×16块搜索模式,则说明此宏块包含的纹理信息较少;在加速级别高时,使用16×16块,将减少运动搜索,提高编码速度,但得到的编码图像质量没有使用更小块搜索的编码图像质量好;反之,在加速级别低时,使用16×16块,16×8块,8×16块,8×8块等更小的块搜索,将增加运动搜索,降低编码速度,但提高了编码图像质量;
所述解码宏块中DCT系数为0的加速措施:如果一个宏块解码时某些块的DCT系数为0,则说明此宏块包含的纹理信息很少;在加速级别高时,使该块的DCT系数为0,减少DCT变换,提高编码速度,但得到的编码图像质量没有使用DCT变换后编码的图像质量好;在加速级别低时,使用DCT变换,降低编码速度,但提高了编码图像质量。
所述跳帧的加速措施:在加速级别特别高时,将丢掉B帧,这样可以减少B帧的编码,提高编码速度;
步骤6、如果所有图像编码完成,则结束编码控制过程,否则,跳到步骤1继续编码控制。
具体实施例
步骤1、计算编码过程中的实际平均帧率av_fps:
使用逐帧平均的方法,具体计算为:
其中,d_fps为25帧/秒。
步骤2、计算目标帧率o_fps,即视频编码器的输出帧率:
co_fps=d_fps+fps其他资源开销;
fps其他资源开销设置为1;
步骤3、计算编码帧率误差diff_fps:
diff_fps=av_fps-o_fps;
步骤4、自定义编码帧率误差门限,得到编码速度控制级别:
所述的编码速度控制级别从低到高依次定义为:无加速,慢加速,中等加速,快加速,最快加速;
定义编码帧率误差门限为0,-2,-4,-6,则其组成的各个误差门限区段分别对应上述各个不同的编码速度控制级别,则编码帧率误差diff_fps所处的误差门限区段对应的编码速度控制级别分别为:
无加速: diff_fps≥0;
慢加速: -2≤diff_fps<0;
中等加速:-4≤diff_fps<-2;
快加速: -6≤diff_fps<4;
最快加速:diff_fps<-6;
步骤5、根据采用的编码速度控制级别,以及所定义的编码加速规则,使编码器采用相应的编码加速措施,从而达到编码速度和视频图像质量的联合控制;
当加速级别为中等加速时,应用宏块跳过模式的措施;
当加速级别为快加速时,将采用应用帧内编码模式的措施,应用宏块跳过模式的措施,应用解码运动矢量的措施,采用大块搜索模式,应用解码宏块中DCT系数为0的信息;
当加速级别为最快加速时,将采用应用帧内编码模式的措施,应用宏块跳过模式的措施,应用解码运动矢量的措施,采用大块搜索模式,应用解码宏块中DCT系数为0的信息,应用跳帧的措施;
步骤6、如果所有图像编码完成,则结束编码控制过程,否则,跳到步骤1继续编码控制。
本发明提供的一种码流转换中编码速度和视频质量的自适应联合控制方法,在保证速度的同时,尽可能地提高编码图像质量,同时也可以在保证编码图像质量的同时,尽可能提高编码速度,而且这种控制算法计算复杂度很低,不仅适合各种软件应用,而且也适合硬件的实时工作。