跳转至

芯片码率控制使用说明

前言

概述

本文档主要介绍芯片码率控制的参数意义和使用方法。对码率控制中常见的问题,特别是低码率场景的参数调节方法做了专题介绍。

说明:

未有特殊说明,Hi3516DV500、Hi3516CV610、Hi3511CV100与Hi3519DV500内容完全一致。

产品版本

与本文档相对应的产品版本如下。

产品名称

产品版本

Hi3519D

V500

Hi3516D

V500

Hi3516C

V608

Hi3516C

V610

Hi3511C

V100

读者对象

本文档(本指南)主要适用于以下工程师:

  • 技术支持工程师
  • 软件开发工程师

修订记录

修订记录累积了每次文档更新的说明。最新版本的文档包含以前所有文档版本的更新内容。

文档版本

发布日期

修改说明

00B01

2026-06-30

第1次临时版本发布。

码率控制参数的意义和使用方法

CBR参数说明及使用方法

CBR参数说明如表1和表2所示。

表 1 CBR属性

参数

说明

应用场景

备注

gop

I帧间隔。

一般设置为输出帧率的整数倍

略

stats_time

统计时间, 以秒为单位。

一般场景设置为(GOP/输出帧率)即可;关注长期码率稳定,短期波动不在意的可以设置大一些,例:DVR存盘。设大可以提高重编码判决的门槛, 重编码次数会减少,但是码率波动会加大。

略

src_frame_rate

输入帧率。

帧率控制

略

dst_frame_rate

输出帧率。

帧率控制

略

bit_rate

目标码率。

略

略

表 2 CBR高级参数—帧级

参数

说明

应用场景

备注

min_i_proportion

最小IP比,默认1

接口暂不生效

略

max_i_proportion

最大IP比,默认20

控制I帧占比,限制静止场景I帧过大,可能会引起呼吸效应。如果I帧大小超出max_i_proportion倍P帧,则I帧QP会增加,从而限制I帧大小。

略

max_qp

最大QP 建议值: [40, 51]

限制最差的图像质量,当QP调整到这个值的时候,不会再往上调,可能会导致码率上冲。关注码率的场景设置成51,关注质量的场景根据需要设置。

略

min_qp

最小QP 建议值:[10, 20]

限制最好的图像质量,当QP调整到这个值的时候,不会再往下调,可能会导致码率不足;主要用于节省简单静止场景下的码率。

略

max_i_qp

最大I帧QP

建议值:[35, 45]

对于静止场景,I帧QP对于图像质量影响很大,限制I帧QP的最大值,对于保持图像静止部分的图像质量有帮助。

略

min_i_qp

I帧最小QP 静止纹理非常复杂场景,建议[20,25] 正常场景建议等于min_qp

限制I帧的最小QP,主要为了控制I帧占比

略

max_reencode_times

最大重编次数,取值范围[0,3],默认2 建议不要关闭重编码,对保证码率稳定十分有效

一般场景默认值就足够

略

qpmap_en

QpMap使用相对QP方式,用于AdaptiveROI方式使能。

使用智能分析和编码结合,通过QpMap设置相对QP的方式,根据智能分析的结果调节CU级码率控制。

此标志有效时,编码器解析MPI发送图像接口中的QpMap并配置给编码逻辑。

略

qpmap_mode(仅H.265编码)

在编码CU块大于16x16且对应多个QP时,编码QP的选择方式。

qpmap_en为TD_TRUE时有效。

对于一个CU对应多个QP的情况,编码CU使用的QP支持最大、最小、平均值三种选择方式。

略

VBR参数说明及使用方法

VBR参数如表1和表2所示。

表 1 VBR属性

参数

说明

应用场景

备注

gop

I帧间隔

一般设置为输出帧率的整数倍

略

stats_time

统计时间,以秒为单位。

与CBR一致

略

src_frame_rate

输入帧率

帧率控制

略

dst_frame_rate

输出帧率

帧率控制

略

max_bit_rate

最大码率

略

略

表 2 VBR高级参数—帧级

参数

说明

应用场景

备注

chg_pos

开始调节的码率 [80,90]如果对码率超出很敏感,建议设置80,对码率超出不敏感,建议设置90

略

略

min_i_proportion

最小IP比,默认1

与CBR用法一致

略

max_i_proportion

最大IP比,默认20

与CBR用法一致

略

max_reencode_times

最大重编次数, 取值范围[0,3] 默认2

与CBR用法一致

略

qpmap_en

QpMap使用相对QP方式,用于AdaptiveROI方式使能。

使用智能分析和编码结合,通过QpMap设置相对QP的方式,根据智能分析的结果调节CU级码率控制。

此标志有效时,编码器解析MPI发送图像接口中的QpMap并配置给编码逻辑。

略

qpmap_mode(仅H265编码)

在编码CU块大于16x16且对应多个QP时,编码QP的选择方式。

qpmap_en为TD_TRUE时有效。

对于一个CU对应多个QP的情况,编码CU使用的QP支持最大、最小、平均值三种选择方式。

略

max_qp

max_i_qp

min_qp

min_i_qp

根据不同码率和场景设置合适的QP。

min_i_qp限制I帧最小Qp;min_qp限制其他帧类型的最小Qp。

建议值: min_qp [24,32] max_qp [40,51]

最大QP影响图像质量;最小QP影响VBR最低码率。

设置最大QP来平衡编码压力上升的时候图像质量优先还是限制最大码率优先。

设置最小QP来平衡编码压力下降时图像质量优先还是降低码率优先。

略

ABR参数说明及使用方法

ABR参数如表1和表2所示。

表 1 ABR属性

参数

说明

应用场景

备注

gop

I帧间隔。

一般设置为输出帧率的整数倍

略

stats_time

统计时间,以秒为单位。

一般场景设置为(GOP/输出帧率)即可;关注长期码率稳定,短期波动不在意的可以设置大一些,例:DVR存盘。设大可以提高重编码判决的门槛,重编码次数会减少,但是码率波动会加大。

略

src_frame_rate

输入帧率。

帧率控制

略

dst_frame_rate

输出帧率。

帧率控制

略

bit_rate

目标码率。

略

略

vbv_buf_delay

bit_rate* vbv_buf_delay为视频缓冲区校验器的大小

vbv_buf_delay用于平衡瞬时码率波动与编码图像质量稳定性的矛盾:减小vbv_buf_delay可以减小瞬时码率波动,但会增加编码图像质量波动;相反,增加vbv_buf_delay可以减少编码图像质量波动,但会增大瞬时码率波动。

略

表 2 ABR高级参数一帧级

参数

说明

应用场景

备注

max_qp

最大QP 建议值: [40, 51]

限制最差的图像质量,当QP调整到这个值的时候,不会再往上调,可能会导致码率上冲。关注码率的场景设置成51,关注质量的场景根据需要设置。

略

min_qp

最小QP 建议值:[10, 20]

限制最好的图像质量,当QP调整到这个值的时候,不会再往下调,可能会导致码率不足;主要用于节省简单静止场景下的码率。

略

max_i_qp

最大I帧QP

建议值:[35, 45]

对于静止场景,I帧QP对于图像质量影响很大,限制I帧QP的最大值,对于保持图像静止部分的图像质量有帮助。

略

min_i_qp

I帧最小QP 静止纹理非常复杂场景,建议[20,25] 正常场景建议等于min_qp

限制I帧的最小QP,主要为了控制I帧占比

略

max_reencode_times

最大重编次数,取值范围[0,3],默认2 建议不要关闭重编码,对保证码率稳定十分有效

一般场景默认值就足够

略

qpmap_en

QpMap使用相对QP方式,用于AdaptiveROI方式使能。

使用智能分析和编码结合,通过QpMap设置相对QP的方式,根据智能分析的结果调节CU级码率控制。

此标志有效时,编码器解析MPI发送图像接口中的QpMap并配置给编码逻辑。

略

qpmap_mode(仅H.265编码)

在编码CU块大于16x16且对应多个QP时,编码QP的选择方式。

qpmap_en为TD_TRUE时有效。

对于一个CU对应多个QP的情况,编码CU使用的QP支持最大、最小、平均值三种选择方式。

略

AVBR参数说明及使用方法

AVBR参数如表1和表2所示。

表 1 AVBR属性

参数

说明

应用场景

备注

gop

I帧间隔。

一般设置为输出帧率的整数倍

略

stats_time

统计时间,以秒为单位。

与CBR一致

略

src_frame_rate

输入帧率。

帧率控制

略

dst_frame_rate

输出帧率。

帧率控制

略

max_bit_rate

最大码率。

略

略

表 2 AVBR高级参数—帧级

参数

说明

应用场景

备注

chg_pos

开始调节的码率,建议范围:[80, 90]

如果对码率超出很敏感,建议设置80

对码率超出不敏感,建议设置90

略

略

min_i_proportion

最小IP比,默认1

与CBR用法一致

略

max_i_proportion

最大IP比,默认100

与CBR用法一致

略

max_reencode_times

最大重编次数,取值范围[0, 3],默认2

与CBR用法一致

略

qpmap_en

QpMap使用相对QP方式,用于AdaptiveROI方式使能。

使用智能分析和编码结合,通过QpMap设置相对QP的方式,根据智能分析的结果调节CU级码率控制。

此标志有效时,编码器解析MPI发送图像接口中的QpMap并配置给编码逻辑。

略

qpmap_mode(仅H265编码)

在编码CU块大于16x16且对应多个QP时,编码QP的选择方式。

qpmap_en为TD_TRUE时有效。

对于一个CU对应多个QP的情况,编码CU使用的QP支持最大、最小、平均值三种选择方式。

略

min_still_percent

场景静止时,最小目标码率的百分比;

建议值:[5, 50]

设置越小,静止场景码率下降越显著;

设置为100时不启动内部码率调节机制,码率控制效果与VBR相同

略

max_still_qp

静止场景I帧QP的最大值;

建议值:[30, 40]

目标码率降低过大会带来静止场景QP升高,图像质量变差,此时可以使用这个变量限制静止场景I帧QP的最大值;

略

min_still_psnr

保留,暂不使用

略

略

max_qp

min_qp

max_i_qp min_i_qp

根据不同码率和场景设置合适的QP。

min_i_qp限制I帧最小Qp;

max_i_qp限制I帧最大Qp;

min_qp限制其他帧类型的最小Qp;

max_qp限制其他帧类型的最大Qp。

建议值:

min_qp [24,32]

max_qp [40,51]

最大QP影响图像质量;最小QP影响VBR最低码率。

设置最大QP来平衡编码压力上升的时候图像质量优先还是限制最大码率优先。

设置最小QP来平衡编码压力下降时图像质量优先还是降低码率优先。

略

min_qp_delta

用于调节帧级最小Qp和宏块级最小Qp的差值。例如P帧:frame_level_min_qp = min_qp_delta + min_qp。

取值范围[0, 4]。

建议有需要调节的客户在[1,4]范围内调节。

在图像内容比较简单时,码控会降低Qp值,当帧级Qp调节到frame_level_min_qp,帧级码率控制就不再下调Qp,但是CU/宏块级码率控制依然生效,图像中平坦区域Qp能够下调到更小值。min_qp_delta默认为0,表示帧级和CU/宏块级码率控制采用相同的最小Qp。

略

motion_sensitivity

运动敏感度,该值越大表示码率控制对运动的变化反应更快,但同时对噪声也更敏感。

略

略

QVBR参数说明及使用方法

QVBR参数如表1和表2所示。

表 1 QVBR属性

参数

说明

应用场景

备注

gop

I帧间隔。

一般设置为输出帧率的整数倍

略

stat_time

统计时间,以秒为单位。

与CBR一致

略

src_frame_rate

输入帧率。

帧率控制

略

dst_frame_rate

输出帧率。

帧率控制

略

target_bit_rate

目标码率。

略

略

表 2 QVBR高级参数—帧级

参数

说明

应用场景

备注

min_i_proportion

最小IP比,默认1

与CBR用法一致

略

max_i_proportion

最大IP比,默认100

与CBR用法一致

略

max_reencode_times

最大重编次数,取值范围[0, 3],默认2

与CBR用法一致

略

qpmap_en

QpMap使用相对QP方式,用于AdaptiveROI方式使能。

使用智能分析和编码结合,通过QpMap设置相对QP的方式,根据智能分析的结果调节CU级码率控制。

此标志有效时,编码器解析MPI发送图像接口中的QpMap并配置给编码逻辑。

略

qpmap_mode(仅H265编码)

在编码CU块大于16x16且对应多个QP时,编码QP的选择方式。

qpmap_en为TD_TRUE时有效。

对于一个CU对应多个QP的情况,编码CU使用的QP支持最大、最小、平均值三种选择方式。

略

max_qp

min_qp

max_i_qp min_i_qp

根据不同码率和场景设置合适的QP。

min_i_qp限制I帧最小Qp;

max_i_qp限制I帧最大Qp;

min_qp限制其他帧类型的最小Qp;

max_qp限制其他帧类型的最大Qp。

建议值:

min_qp [24,32]

max_qp [40,51]

最大QP影响图像质量;最小QP影响VBR最低码率。

设置最大QP来平衡编码压力上升的时候图像质量优先还是限制最大码率优先。

设置最小QP来平衡编码压力下降时图像质量优先还是降低码率优先。

略

max_bit_percent min_bit_percent

设置码率动态浮动的范围。

最大码率=target_bit_rate* max_bit_percent /100

最小码率target_bit_rate* min_bit_percent/100

建议值:

max_bit_percent [100,125]

min_bit_percent [45,100]

QVBR码控算法会实时判断当前场景的图像复杂程度,主动调整目标码率;这组参数将动态码率限制在一个范围,在场景简单时向下调整目标码率,在场景复杂时向上调整目标码率。

略

max_psnr_fluctuate min_psnr_fluctuate

触发动态调整码率的PSNR(图像质量客观评价指标)范围参数。

建议值:

max_psnr_fluctuate [30,37]

min_psnr_fluctuate [21,27]

当实时统计的PSNR值大于等于max_psnr_fluctuate时,认为当前图像质量较好,可以向下调整码率;

当实时统计的PSNR值小于等于min_psnr_fluctuate时,认为当前图像质量较差,可以向上调整码率;

在实时统计的PSNR值在这两个参数区间,不调整码率。

当PSNR值范围超过[min_psnr_fluctuate-4, max_psnr_fluctuate+4]∩ [20,40]时PSNR不再起作用,码率会在最大码率和最小码率间调整。

CVBR参数说明及使用方法

CVBR参数如表1和表2所示。

表 1 CVBR属性

参数

说明

应用场景

备注

gop

I帧间隔。

一般设置为输出帧率的整数倍

略

stats_time

统计时间,以秒为单位。

与CBR一致

略

src_frame_rate

输入帧率。

帧率控制

略

dst_frame_rate

输出帧率。

帧率控制

略

max_bit_rate

最大短期码率(单位:kbps)。

建议值:1.5倍长期最大码率

增加该值可改善大运动场景的质量

略

short_term_stats_time

短期码率的统计时间(单位:秒)。

建议值:3

较小值可以让图像质量对码率的反应更加迅速,反之则图像质量变化更加平稳。

略

long_term_stats_time

长期码率的统计时间:最大值1440,单位由高级属性long_term_stats_time_unit确定,默认为分钟(即60秒),算法尽量使该统计时间内的平均码率不超过long_term_max_bit_rate。

建议值:1440

如需长期统计时间小于1440秒,则降低该值

略

long_term_max_bit_rate

long_term_min_bit_rate

长期统计时间内最大码率和最小码率(单位:kbps):编码器尽可能使长期统计时间内的平均码率在该范围内。

如果需要尽量节省码率,long_term_min_bit_rate可设为0。如果需要最终平均码率为固定植,可将long_term_max_bit_rate

和long_term_min_bit_rate同时设为该固定植

略

表 2 CVBR高级参数—帧级

参数

说明

应用场景

备注

min_i_proportion

最小IP比,默认1

与CBR用法一致

略

max_i_proportion

最大IP比,默认100

与CBR用法一致

略

max_reencode_times

最大重编次数,取值范围[0, 3],默认2

与CBR用法一致

略

qpmap_en

QpMap使用相对QP方式,用于AdaptiveROI方式使能。

使用智能分析和编码结合,通过QpMap设置相对QP的方式,根据智能分析的结果调节CU级码率控制。

此标志有效时,编码器解析MPI发送图像接口中的QpMap并配置给编码逻辑。

略

qpmap_mode

(仅H265编码)

在编码CU块大于16x16且对应多个QP时,编码QP的选择方式。

qpmap_en为TD_TRUE时有效。

对于一个CU对应多个QP的情况,编码CU使用的QP支持最大、最小、平均值三种选择方式。

略

max_qp

min_qp

max_i_qp

min_i_qp

根据不同码率和场景设置合适的QP。

min_i_qp限制I帧最小Qp;

max_i_qp限制I帧最大Qp;

min_qp限制其他帧类型的最小Qp;

max_qp限制其他帧类型的最大Qp。

建议值:

min_qp [24,32]

max_qp [40,51]

最大QP影响图像质量;最小QP影响VBR最低码率。

设置最大QP来平衡编码压力上升的时候图像质量优先还是限制最大码率优先。

设置最小QP来平衡编码压力下降时图像质量优先还是降低码率优先。

略

min_qp_delta

max_qp_delta

min_qp_delta用于调节帧级最小Qp和宏块级最小Qp的差值。例如P帧:frame_level_min_qp = min_qp+ min_qp_delta。

取值范围[0, 4]。

建议有需要调节的客户在[1,4]范围内调节。

max_qp_delta

用于调节帧级最大Qp和宏块级最大Qp的差值。例如P帧:frame_level_max_qp = max_qp- max_qp_delta。

取值范围[0, 4]。

建议有需要调节的客户在[1,4]范围内调节。

在图像内容比较简单时,码控会降低Qp值,当帧级Qp调节到frame_level_min_qp,帧级码率控制就不再下调Qp,但是CU/宏块级码率控制依然生效,图像中平坦区域Qp能够下调到更小值。min_qp_delta默认为0,表示帧级和CU/宏块级码率控制采用相同的最小Qp。

在图像内容比较复杂时,码控会升高Qp值,当帧级Qp调节到frame_level_max_qp,帧级码率控制就不再升高Qp,但是CU/宏块级码率控制依然生效,图像中强纹理区域Qp能够升高到更大值。max_qp_delta默认为0,表示帧级和CU/宏块级码率控制采用相同的最大Qp。

略

extra_bit_percent

编码器输出码率最大透支bit数相对于长期最大码率的百分比。

在码率不足时,为保证图像质量,编码器会通过透支一定的bit数以提升图像质量,这部分透支的码率会在编码压力较小时进行偿还。

取值范围[0, 1000]

默认值:5

客户可以根据实际存储设备的情况,配置该透支百分比。

extra_bits(允许透支总bit数)= extra_bit_percent *long_term_max_bit_rate*long_term_stats_time *long_term_stats_time_unit

略

long_term_stats_time_unit

码率长期统计时间参数(long_term_stats_time)的单位,本变量单位是秒(s),如配置long_term_stats_time_unit = 60,long_term_stats_time =3,代表长期统计时间为3分钟。

取值范围:[1, 1800];

默认值:60

long_term_stats_time_unit 的默认值为60,即客户配置的long_term_stats_time单位为分钟(60秒),如客户长期统计时间较长,可以把单位适配成 半小时(1800秒)。

略

宏块级码率控制参数说明及使用方法

宏块级码率控制参数如表1所示。

表 1 宏块级码率控制参数

参数

说明

应用场景

备注

threshold_i [16]

threshold_p [16]

threshold_b[16]

基于纹理的宏块级码率控制参数:I、P、B帧madi阈值。

H264默认值:

I:[0, 0, 0, 0, 3, 3, 5, 5, 8, 8, 8, 15, 15, 20, 25, 25];

P:[0, 0, 0, 0, 3, 3, 5, 5, 8, 8, 8, 15, 15, 20, 25, 25];

B:[0, 0, 0, 0, 3, 3, 5, 5, 8, 8, 8, 15, 15, 20, 25, 25]。

H265默认值:

I:[0, 0, 0, 0, 3, 3, 5, 5, 8, 8, 8, 15, 15, 20, 25, 25];

P:[0, 0, 0, 0, 3, 3, 5, 5, 8, 8, 8, 15, 15, 20, 25, 25];

B:[0, 0, 0, 0, 3, 3, 5, 5, 8, 8, 8, 15, 15, 20, 25, 25]。

纹理级码率控制使平坦区域QP减少,细节区域QP增加,使主观图像质量更好。

前8级为减QP方向;后8级为加QP方向:

对于减QP方向,设置为0表示关闭当前级;

对于加QP方向,设置255表示关闭当前级。

略

direction

在基于纹理宏块级码率控制时,用于控制加减方向。

取值范围:[0,16]。

例如:direction =7表示:threshold的前7个参数用于QP减方向;后9个参数用于QP加方向。

略

row_qp_delta

基于行的宏块级码率控制,默认值为2。行级码率控制增加码率稳定性。设置为0表示关闭基于行的宏块级码率控制。

行级码率控制,设置越大一帧之内QP调整的幅度越大,码率也更稳定。

略

first_frame_start_qp

第一帧的起始Qp值。

第一帧的起始QP,编码器内部会根据经验值推算一个合适的QP,但是客户可以根据产品的实际场景调整。

略

码率过高丢帧参数及使用说明

码率过高丢帧参数如表1所示。

表 1 码率过高丢帧参数

参数

说明

应用场景

备注

enable

码率过冲丢帧开关

当码率超过阈值时开启丢帧,保证码率平稳。

略

bit_rate_threshold

码率过冲阈值:

丢帧阈值建议设为目标码率的1.2倍或最大码率

略

略

mode

丢帧方式选择,丢帧方式可以选择正常丢帧或者编码为PSkip帧。

当码率过冲时丢帧或编PSkip帧

略

frame_gap

非0值表示连续丢帧最大个数。

设置为0时表示连续丢帧,不计算个数。

保证连续丢帧时的流畅度。

略

超大帧策略高级参数及使用说明

超大帧策略高级参数如表1所示。

表 1 超大帧策略高级参数

参数

说明

应用场景

备注

super_frame_mode

超大帧策略

三种模式可以选择:

重编、丢帧、正常输出

略

i_frame_bits_threshold

I帧编码bit数阈值

略

略

p_frame_bits_threshold

P帧编码bit数阈值

略

略

b_frame_bits_threshold

B帧编码bit数阈值

略

略

reencode_priority

超大帧重编优先级

1:按照目标码率分配重编码bit数;

2:按照超大帧阈值分配重编码bit数。

略

略

GOP结构参数的意义和使用方法

单参考P帧GOP结构属性说明及使用方法

单参考P帧编码GOP结构参数如表1所示。

表 1 单参考P帧编码GOP结构参数

参数

说明

应用场景

备注

ip_qp_delta

IP帧QP差值,用于调节呼吸效应

建议值:[2, 6]

用于调节呼吸效应及控制I帧大小。

略

双参考P帧GOP结构属性说明及使用方法

双参考P帧编码GOP结构参数如表1所示。

表 1 双参考P帧编码GOP结构参数

参数

说明

应用场景

备注

sp_interval

Special P帧间隔。

建议值:[4, 10]

在一个GOP中,按照固定间隔编码一些质量更好的P帧,称为Special P帧。通过时域参考的相关性,提升编码整体图像质量。

使用双参考P帧模式将在编码端和解码端各增加一个帧存DDR,但不增加系统端到端延时。

略

sp_qp_delta

Special P帧相对普通P帧的QP差值,用于优化图像质量。

建议值:[2, 4]

略

略

ip_qp_delta

I帧相对普通P帧的QP差值,用于调节呼吸效应。

建议值:[2, 6]

用于调节呼吸效应及控制I帧大小。

略

智能P帧GOP结构属性说明及使用方法

说明:

Hi3519DV500/Hi3516CV610/Hi3511CV100不支持adv_smart_p。

smart_p/adv_smart_p智能P帧编码GOP结构参数如表1所示。

表 1 smart_p/adv_smart_p智能P帧编码GOP结构参数

参数

说明

应用场景

备注

bg_interval

长期参考帧间隔。

建议值:

GOP的10 ~ 30倍

在码流中周期性的插入长期参考帧,利用时域相关性提升编码图像质量。

对于镜头固定安装,相对静止的场景可以提升编码性能。

一般设置为GOP的整数倍,并与码率统计时间相匹配。

使用smart_p帧模式将在编码端和解码端各增加一个帧存DDR,但不增加系统端到端延时。

略

bg_qp_delta

长期参考帧相对于普通P帧的QP差值。建议值:[2, 10]

用于调节长期参考帧的质量及调节长期参考帧的大小。

略

vi_qp_delta

虚拟I帧相对于普通P帧的QP差值。

建议值:[2, 4]

虚拟I帧仅参考长期参考帧,可以独立解码。用于错误恢复或播放器Seek。在smart_p帧编码模式下,虚拟I帧的间隔等于gop。

vi_qp_delta用于调节虚拟I帧的质量及调节虚拟I帧的大小,将虚拟I帧采用更好的图像质量编码,可以提升编码性能。

略

B帧GOP结构参数说明及使用方法

说明:

此小节 Hi3519DV500/Hi3516CV610/Hi3511CV100不支持。

B帧编码GOP结构参数如表1所示。

表 1 B帧编码GOP结构参数

参数

说明

应用场景

备注

b_frame_num

相邻两个P帧之间插入B帧个数。

建议值:[1, 2]

B帧采用双向参考方式,能够最大限度的利用前后两帧的相关性,提升编码性能,降低码率;

使用B帧将在编码端和解码端各增加一个帧存DDR;

编码端和解码端各增加b_frame_num个帧间隔的延迟。

略

b_qp_delta

B帧相对P帧的QP差值,用于降低码率。

建议值:[-4, -2]

B帧本身不被其他帧参考,所以B帧可以适当降低图像质量。建议这个变量设置为负值,适当增加B帧QP,以达到节约码率的作用。

略

ip_qp_delta

I帧相对普通P帧的QP差值,用于调节呼吸效应。

建议值:[2, 6]

用于调节呼吸效应及控制I帧大小。

略

码率控制专题

码率更稳定

码率更稳定方法参见表1。

表 1 码率更稳定方法

方法

对应参数设置

副作用

增加行级码率控制调整幅度

ot_venc_rc_param::row_qp_delta,从默认值2增加到3~5

qp_delta设置过大,虽然静止或小运动场景码率会看起来十分平稳,但是大运动场景会让调整QP的反应变慢,大运动码率波动反而变大, 建议设置不要超过5。

设置码率超出阈值丢帧,设置连续丢帧个数

ot_venc_frame_lost_strategy::enable= TD_TRUE;

ot_venc_frame_lost_strategy::bit_rate_threshold = 丢帧阈值;

ot_venc_frame_lost_strategy::mode = OT_VENC_FRAME_LOST_NORMAL 或 OT_VENC_FRAME_LOST_P_SKIP;

ot_venc_frame_lost_strategy::frame_gap = 连续丢帧间隔

当码率控制不住时通过丢帧来降低码率,视频流畅性降低;丢帧阈值建议为目标码率的1.1倍~1.2倍;连续丢帧间隔建议为2或3。

图像质量提升

提升图像质量方法参见表1所示。

表 1 提升图像质量方法

方法

对应参数设置

副作用

设置最大QP

ot_venc_h264_cbr_param::max_qp

ot_venc_h265_cbr_param::max_qp

ot_venc_h264_vbr_param::max_qp

ot_venc_h265_vbr_param::max_qp

限制最大QP能够有效的保护图像质量, 但是容易产生码率过冲。

调节呼吸效应

调节呼吸效应方法参见表1。

表 1 调节呼吸效应方法

方法

对应参数设置

副作用

设置IP帧之间的QP差值,正数表示I帧QP小于P帧QP

ot_venc_gop_normal_p::ip_qp_delta

ot_venc_gop_dual_p::ip_qp_delta

ot_venc_gop_bipred_b::ip_qp_delta

ip_qp_delta的默认值与纹理级码率控制有一定关联, 当纹理级打开时默认值为6;当纹理级关闭时默认值为2; 调节呼吸效应ip_qp_delta应在默认值的基础上适当增加或减少。

设置去除呼吸效应参数

ot_venc_debreath_effect::strength0

ot_venc_debreath_effect::strength1

原则上,对不同的场景,呼吸效应的改善要做到最佳,需要同时调节参数strength0和strength1。但是考虑到多场景的适应性,建议客户使用默认值。

限制I帧幅度

限制I帧幅度参见表1。

表 1 限制I帧幅度方法

方法

对应参数设置

副作用

置IP帧比例的最大值,当IP帧比例超出这个值的时候内部会有算法限制I帧大小

ot_venc_h264_cbr_param::max_i_proportion

ot_venc_h265_cbr_param::max_i_proportion

通常情况下静止场景I帧多分配一些码流可以改善图像质量,IP帧比例的最大值设置过大会降低图像质量。

设置I帧最小QP

ot_venc_h264_cbr_param::min_i_qp

ot_venc_h265_cbr_param::min_i_qp

这种方法对I帧的限制较强,容易产生码率不足,而且不同场景下合适的I帧QP不同,min_i_qp经验值不容易得到。

设置超大帧重编,一般I帧阈值设置为能容忍的最大值, P帧阈值设置成I帧的一半

ot_venc_super_frame_strategy::super_frame_mode = OT_VENC_SUPER_FRAME_REENCODE;

ot_venc_super_frame_strategy::i_frame_bits_threshold

ot_venc_super_frame_strategy::p_frame_bits_threshold

i_frame_bits_threshold的建议值:在CBR和ABR码控中,设bit_rate代表目标码率,i_frame_bits_threshold设置为“2秒*bit_rate”,同时,码流的缓存大小(buf_size)设置为1.5*i_frame_bits_threshold。

重编次数过多会浪费芯片性能和带宽。

i_frame_bits_threshold设置的值如果明显小于建议值,会降低视频压缩率。

buf_size设置的值如果明显小于建议值,会造成丢帧风险增加。

减少运动拖影和色度拖影

运动拖影主要发生在纹理比较平坦的区域,减少运动拖影可以调整纹理级宏块码率控制参数。减少色度拖影可以调整色度量化参数偏移,参见表1。

表 1 减少运动拖影和色度拖影的方法

方法

对应参数设置

副作用

调整宏块级码率控制参数

ot_venc_rc_param::threshold_p[16]

通常情况纹理简单的静止区域更容易出现拖影,通过纹理级码率控制可以降低简单区域的QP,减少拖影,但是纹理复杂的区域会相应减少比特分配,降低图像质量。

减小chroma_qp_offset,对色度拖影问题适用

ot_venc_h264_trans::chroma_qp_index_offset

ot_venc_h265_trans::cb_qp_offset

ot_venc_h265_trans::cr_qp_offset

降低色度QP,使色度质量更好;副作用是色度分配更多比特必然导致亮度少分配比特数。

增加3DNR去噪强度

-

对图像细节的保留程度会减弱。

码率控制的起始QP

当前码率控制算法内部包含起始QP的经验算法。该算法选择典型场景根据码率、分辨率等计算合适的起始QP,但是不能得到适应每个场景的绝对合适的起始QP值。

  • 如果起始QP选择偏大,会导致编码的最初一段时间内码率不足,图像质量稍差;
  • 如果起始QP选择偏小,会导致编码的最初一段时间码率超出。
  • 如果客户觉得我们算法计算的经验值不合适,可以通过ot_venc_rc_param::first_frame_start_qp配置合适的起始QP值。该接口在创建通道后,开始第一帧编码之前调用有效。

VBR、AVBR、CVBR和QVBR的运行机制

  • VBR的运行机制:运动场景等编码压力大的时候,通过调节start_qp使码率不超出最大码率;静止等编码压力小的时候,start_qp钳位到min_qp,此时码率会低于最大码率,达到节省码率的目的;
  • AVBR的运行机制:编码增加运动检测方法,在运动时调高目标码率,并控制start_qp使码率不超出最大码率;静止时调低目标码率,达到节省码率的目的;但降码率会在某些场景下轻微损失一些图像细节。
  • QVBR的运行机制:利用PSNR客观图像评价指标,动态调整码率,在PSNR较小时主动升高目标码率,PSNR较大时主动降低目标码率,达到节省码率和保证图像质量的双重目的。
  • CVBR的运行机制:设置了瞬时,短期与长期码率的限制,在场景简单时存储码率,存储的码率用于提升复杂场景的图像质量,从而保证图像质量的长期平稳。

VBR、AVBR、CBR和CVBR的差异

  • VBR和AVBR的差异:VBR是被动节省码率而AVBR是主动节省码率;在静止时AVBR使用的QP可以高于min_qp,从而在静止时节省更多码率。AVBR可主动向上向下双向动态调整码率,从而保证编码图像质量平稳。
  • CVBR和VBR的差异:CVBR与VBR一样追求较平稳的图像质量,但增加了在不同统计时间内的码率限制,以分别满足传输带宽和储存空间的限制。
  • CVBR和AVBR的差异:CVBR输出码率的变化不依赖于运动检测,而是根据场景情况带来的编码压力自动变化;同时,CVBR追求在编码压力变化时达到较平稳的图像质量,使用长期码率的统计,并在长期码率满足用户要求的前提下,对目标码率进行调整,以尽量满足图像质量平稳的要求。
  • CVBR和CBR的差异:CBR的输出不区分场景,即在场景简单时不会降低码率,场景复杂时不能使用额外码率。而CVBR的码率根据场景而自动变化,即在场景简单时会降低码率,场景复杂时能使用额外码率,最终达到更稳定质量,且平均码率不超过目标码率的效果。

低码率场景

  • 降低ISP模块AE的灵敏度,增大AE反应延迟,避免光线明暗变化后AE的频繁调节。

    建议参数:

    适当增加AE从亮到暗及从暗到亮调节的延迟。

    适当降低AE变化敏感度。

  • 增加3DNR去噪强度,适当增加TF和SF强度;适当降低Sharpen强度,降低图像细节。

    建议参数:

    适当增大SF(空域滤波强度)和TF(时域滤波强度);调整的时候注意保持SF大约是TF的4倍。

  • 设置较大的GOP,同时码率统计时间stats_time与GOP值设置相匹配。使用SmartP/AdvSmartP模式,bg_interval应该与stats_time相匹配。

    建议参数:

    GOP设置为帧率的4~10倍,例如帧率30fps,GOP设置为120~300,stats_time设置为4~10秒。

  • 适当降低帧率,或者设置编码PSkip的方式降低帧率。

    建议参数:

    目标帧率设置为15fps;

    ot_venc_frame_lost_strategy::mode= OT_VENC_FRAME_LOST_P_SKIP;

    ot_venc_frame_lost_strategy::frame_gap = 2。

  • 打开基于纹理的宏块级码率控制,设置推荐参数即可。

  • 对于固定安装_录像机_等偏静止场景,建议使用SmartP/AdvSmartP模式编码;对于镜头有运动但对延时要求不高的场景建议使用BipredB模式编码;对于其他场景建议使用DualP模式编码。

注意事项

注意事项如下:

  • gop:最好设置为编码帧率的整数倍,如果不是整数倍,I帧的分布在时间上会不均匀,导致瞬时码率波动;中高码率下GOP可以等于编码帧率;低码率下 g需要适当加大。
  • stats_time:设置为(GOP/编码帧率)的整数倍,例如帧率25fps,GOP50,统计时间应该设为2秒、4秒等;统计时间与GOP不匹配会导致瞬时码率不稳定,导致图像质量也不稳定;一般场景设置为GOP的1倍即可,关注长期码率稳定,短期波动不在意的可以设置大一些。点播场景如果使用请求I帧接口会造成短时间码率过冲,增加统计时间可以减少码率过冲造成的QP变化,使图像质量更稳定。
  • src_frame_rate:设置为VI的帧率,编码内部帧率控制会校验时间戳来计算是否丢帧,时间戳是VI采集的时候打上的,因此src_frame_rate要与VI实际的帧率保持一致;src_frame_rate如果与VI实际帧率不一致,实际码率与目标码率会不一致。
  • max_i_proportion:对超出P帧大小max_i_proportion倍的I帧进行限制,这个功能可以有效抑制静止场景下I帧的大小;
  • max_qp、max_i_qp:对最大QP进行限制。偏重码率,不在意质量的建议值51;关注质量,不在意码率上冲的可以设置为[40,51];
  • min_qp、min_i_qp:对最小QP进行限制。希望在图像静止或小运动的时候节省码率,CBR建议设置为[10,20];VBR建议设置为[24,32]。
  • 超大帧丢帧是丢弃已经编码的当前帧;码率过冲丢帧是丢弃下一帧。两种丢帧方法不矛盾,可以配合使用。
  • ROI和OSD保护可能会影响到码率控制,如果在低码率场景设置了面积较大、QP值较小的ROI或OSD保护,会降低整体图像质量;也可能会造成码率过冲。
  • CVBR模式中,对于较简单场景,最终码率有可能低于long_term_min_bit_rate。
  • CVBR的min_i_qp和min_qp对码率控制的效果有影响。如果min_i_qp和min_qp设置过小,则简单静止场景码率始终无法节省,复杂运动场景也无法使用更多码率编码,导致CVBR的效果接近CBR。如果min_i_qp和min_qp设置过大,会影响图像质量,码率始终低于long_term_max_bit_rate,不能完全使用码率额度,造成图像质量不够好。min_i_qp和min_qp的一组推荐值如表1,具体针对不同场景使用时客户可以在此基础上调整。
  • ABR码控的适用场景:监控场景(动静结合)、瞬时运动场景、云台转动场景。
  • ABR码控的副作用:对于一段时间内有长期较为复杂的场景时,ABR码控存在码率耗尽过快的情况,后期一段时间内的瞬时码率相对CBR一段时期恒定平稳的瞬时码率少,会存在一些运动过后糊、缺块等图像质量质量问题。
  • ABR码控GOP配置注意:由于ABR的码率控制需要统计P帧的码率,因此无法适配GOP=1的参数配置,当GOP=1时,ABR码控调节机制失效。

表 1 CVBR的min_i_qp和min_qp参数推荐值

协议

分辨率

码率区间(Mbps)

min_i_qp

min_qp

H.264

1920x1080

[6, 7]

23

25

[4, 6]

25

27

[2, 4]

27

29

3840x2160

[18, 24]

23

25

[12, 18]

25

27

[6, 12]

27

29

H.265

1920x1080

[4, 6]

23

25

[2, 4]

25

27

[1, 2]

27

29

2560x1440

[9, 11]

23

25

[6, 9]

25

27

[3, 6]

27

29

3840x2160

[12, 16]

23

25

[8, 12]

25

27

[4, 8]

27

29

SVAC3.0

1920x1080

[4, 6]

25

28

[2, 4]

28

31

[1, 2]

31

37

2560x1440

[9, 11]

25

28

[6, 9]

28

31

[3, 6]

31

37

3840x2160

[12, 16]

25

28

[8, 12]

28

31

[4, 8]

31

37