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 |
|