VideoEncodeConfig
功能
用于保存视频编码的相关参数。
结构定义
struct VideoEncodeConfig {
    uint32_t maxPicWidth = 4096;
    uint32_t maxPicHeight = 4096;
    uint32_t width = 1920;
    uint32_t height = 1080;
    StreamFormat outputVideoFormat = StreamFormat::H264_MAIN_LEVEL;
    ImageFormat inputImageFormat = ImageFormat::YUV_SP_420;
    VideoEncodeCallBack callbackFunc = nullptr;
    uint32_t keyFrameInterval = 30;
    uint32_t srcRate = 30;
    uint32_t rcMode = 0;
    uint32_t shortTermStatsTime = 60;
    uint32_t longTermStatsTime = 120;
    uint32_t longTermMaxBitRate = 300;
    uint32_t longTermMinBitRate = 0;
    uint32_t maxBitRate = 300;
    uint32_t ipProp = 70;
    uint32_t sceneMode = 0;
    uint32_t displayRate = 30;
    uint32_t statsTime = 1;
    uint32_t firstFrameStartQp = 32;
    std::vector<uint32_t> thresholdI = {0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255};
    std::vector<uint32_t> thresholdP = {0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255};
    std::vector<uint32_t> thresholdB  = {0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255};
    uint32_t direction = 8;
    uint32_t rowQpDelta = 1;
};
参数说明
| 参数名 | 说明 | 
|---|---|
| maxPicWidth | 编码通道最大预留宽度,默认值:4096,单位为像素,取值范围:[128, 4096],配置时需大于“width”,当前仅支持Atlas 推理系列产品。 | 
| maxPicHeight | 编码通道最大预留高度,默认值:4096,单位为像素,取值范围:[128, 4096],配置时需大于“height”,当前仅支持Atlas 推理系列产品。 | 
| width | 编码后视频帧数据的宽,默认值:1920,必须与待编码图片的宽(originalSize)一致。 
 | 
| height | 编码后视频帧数据的高,默认值:1080,必须与待编码图片的高(originalSize)一致。 
 | 
| outputVideoFormat | 编码后输出的视频格式,默认值:StreamFormat::H264_MAIN_LEVEL。 | 
| inputImageFormat | 输入的图像格式,默认值:ImageFormat::YUV_SP_420。 
 | 
| callbackFunc | 编码完成后的回调函数,不能为空指针。 | 
| keyFrameInterval | 视频I帧间隔大小,默认为30。 
 | 
| srcRate | 输入码流帧率,单位fps,默认为30。 
 | 
| rcMode | 指定码率控制模式。 
 | 
| shortTermStatsTime | 码率短期统计时间,单位为秒,默认值为“60”,取值范围:[1, 120]。 该参数仅在Atlas 推理系列产品上,且“rcMode”为5时生效。 | 
| longTermStatsTime | 码率长期统计时间,单位为分钟,默认值为“120”,取值范围:[1, 1440]。 该参数仅在Atlas 推理系列产品上,且“rcMode”为5时生效。 | 
| longTermMaxBitRate | 编码器输出长期最大码率,单位为kbps,默认值为“300”。取值范围:[2, maxBitRate]。 该参数仅在Atlas 推理系列产品上,且“rcMode”为5时生效。 | 
| longTermMinBitRate | 编码器输出长期最小码率,单位为kbps,默认值为“0”。取值范围:[0, longTermMaxBitRate]。 该参数仅在Atlas 推理系列产品上,且“rcMode”为5时生效。 | 
| maxBitRate | 输出码率,单位kbps,默认值为300。 
 | 
| ipProp | 一个GOP内单个I帧bit数和单个P帧bit数的比例,默认值为70,取值范围[1, 100]。 | 
| sceneMode | 场景模式。默认值为“0”。 
 该参数仅在Atlas 推理系列产品上生效。  说明:  当输出视频格式设置为“H.264”并且“sceneMode”设置为“1”时,由于H.264不支持高码率下运动场景,sceneMode值将自动切换成“0”。 | 
| displayRate | 输出视频的播放帧率,默认值为“30”,取值范围[1, 120]。 该参数仅在Atlas 推理系列产品上生效。 | 
| statsTime | 码率统计时间,以秒为单位,默认值为“1”,取值范围:[1, 60]。 该参数仅在Atlas 推理系列产品上生效。 | 
| firstFrameStartQp | 设置第一帧的起始Qp值,默认值为“32”,取值范围: 
 该参数仅在Atlas 推理系列产品上生效。 | 
| thresholdI | I帧宏块级码率控制的Madi(用于度量当前帧的空域纹理复杂度)门限。取值范围:[0,255]。默认值为[0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255]。 减方向的数值设置为“0”,表示关闭当前级;加方向的数值设置为“255”,表示关闭当前级。 该参数仅在Atlas 推理系列产品上生效。 | 
| thresholdP | P帧宏块级码率控制的Madi(用于度量当前帧的空域纹理复杂度)门限。取值范围:[0,255]。默认值为:[0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255]。 减方向的数值设置为“0”,表示关闭当前级;加方向的数值设置为“255”,表示关闭当前级。 该参数仅在Atlas 推理系列产品上生效。 | 
| thresholdB | B帧宏块级码率控制的Madi(用于度量当前帧的空域纹理复杂度)门限。取值范围:[0,255]。默认值为[0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255]。 减方向的数值设置为“0”,表示关闭当前级;加方向的数值设置为“255”,表示关闭当前级。 该参数仅在Atlas 推理系列产品上生效。 | 
| direction | 在基于纹理宏块级码率控制时,用于控制加减方向。默认值为“8”,取值范围:[0, 16]。 该参数仅在Atlas 推理系列产品上生效。 | 
| rowQpDelta | 行级码率控制调节幅度是一帧内行级调节的最大范围,其中行级以宏块行为单位。调节幅度越大,允许行级调整的QP范围越大,码率越平稳。 对于图像复杂度分布不均匀的场景,行级码率控制调节幅度设置过大会带来图像质量不均匀。 默认值为“1”,取值范围:[0, 10],设置为“0”表示关闭基于行的宏块级码率控制。 该参数仅在Atlas 推理系列产品上生效。 | 
推荐配置
以下为视频采集场景下推荐的参数配置,可以保证较好的视频编码质量,其他场景下请根据实际应用对应调整。
| 画质/分辨率 | srcRate | keyFrameInterval | maxBitRate | 
|---|---|---|---|
| 4K 3840 * 2160/4096 * 2160 | 25或30 | 50或60 | 
 | 
| 2K 2560 * 1440 | 25或30 | 50或60 | 
 | 
| 1080P(蓝光) 1920 * 1080 | 25或30 | 50或60 | 
 | 
| 720P(高清) 1280 * 720 | 25或30 | 50或60 | 
 | 
| 480P/D1_N(标清) 854 * 480/720 * 480 | 25或30 | 50或60 | 
 | 
| 576P/D1 (标清) 720 * 576 | 25或30 | 50或60 | 
 | 
| 270P(流畅) 480 * 270 | 25或30 | 50或60 | - | 
| CIF P/N 352 * 288/320 * 240 | 25或30 | 50或60 | 
 |