Skip to main content

hi_venc_chn_attr

hi_venc_stream

说明

定义帧码流类型字典。

定义

hi_venc_stream = {"pack": hi_venc_pack, # R; stream pack attribute
"pack_cnt": pack_cnt, # R; the pack number of one frame stream
"seq": seq} # R; the list number of stream

hi_venc_stream = {"pack": hi_venc_pack, # R; stream pack attribute
"pack_cnt": pack_cnt, # R; the pack number of one frame stream
"seq": seq, # R; the list number of stream
"h264_info": hi_venc_h264_stream_info, # R; the stream info of h264
"h264_adv_info": hi_venc_h264_adv_stream_info} # R; the stream info of h264

hi_venc_stream = {"pack": hi_venc_pack, # R; stream pack attribute
"pack_cnt": pack_cnt, # R; the pack number of one frame stream
"seq": seq, # R; the list number of stream
"h264_info": hi_venc_h264_stream_info} # R; the stream info of h264

hi_venc_stream = {"pack": hi_venc_pack, # R; stream pack attribute
"pack_cnt": pack_cnt, # R; the pack number of one frame stream
"seq": seq, # R; the list number of stream
"jpeg_info": hi_venc_jpeg_stream_info}

hi_venc_stream = {"pack": hi_venc_pack, # R; stream pack attribute
"pack_cnt": pack_cnt, # R; the pack number of one frame stream
"seq": seq, # R; the list number of stream
"h265_info": hi_venc_h265_stream_info} # R; the stream info of h265

hi_venc_stream = {"pack": hi_venc_pack, # R; stream pack attribute
"pack_cnt": pack_cnt, # R; the pack number of one frame stream
"seq": seq, # R; the list number of stream
"h265_info": hi_venc_h265_stream_info, # R; the stream info of h265
"h265_adv_info": hi_venc_h265_adv_stream_info} #R; the stream info of h265

hi_venc_stream = {"pack": hi_venc_pack, # R; stream pack attribute
"pack_cnt": pack_cnt, # R; the pack number of one frame stream
"seq": seq, # R; the list number of stream
"prores_info": hi_venc_prores_stream_info}

成员

成员名称描述
pack整型,帧码流包结构。
pack_cnt整型,一帧码流的所有包的个数。
seq整型,码流序列号。 按帧获取时,此处为帧序号;按包获取时,此处为包序号。
h264_info/h265_info字典,码流特征信息。
jpeg_info/prores_info码流特征信息,暂不支持。
h264_adv_info/h265_adv_info字典,码流高级特征信息。

父主题: 视频/图像编码

hi_venc_pack

说明

定义帧码流包字典。

定义

hi_venc_pack = {"phys_addr": phys_addr,
"addr": addr,
"len": len,
"pts": pts,
"is_frame_end": is_frame_end,
"data_type": hi_venc_data_type,
"offset": offset,
"data_num": data_num
"pack_info": [hi_venc_pack_info]}

hi_venc_pack = {"input_addr": input_addr,
"addr": addr,
"len": len,
"pts": pts,
"is_frame_end": is_frame_end,
"data_type": hi_venc_data_type,
"offset": offset,
"data_num": data_num
"pack_info": [hi_venc_pack_info]}

成员

成员名称描述
addr整型,码流包首地址。
phys_addr整型, 码流包物理地址。
input_addr整型,用户输入码流数据的内存地址。
len整型,码流包长度。 当len=0,表示视频/图像编码失败。
data_type整型,码流类型,支持 H.265/H.264/JPEG协议类型的数据包。
pts整型,时间戳。单位:us。
is_frame_end整型,帧结束标识。 取值范围:
- HI_TRUE:该码流包是该帧的最后一个包。
- HI_FALSE:该码流包不是该帧的最后一个包。
offset整型,码流包中有效数据与码流包首地址 addr 的偏移。
data_num整型,当前码流包(当前包的类型由 data_type 指定)数据中包含码流包的个数。
pack_info列表,当前码流包数据中包含码流包数据信息。

父主题: 视频/图像编码

hi_venc_chn_attr

说明

定义编码通道属性字典。

定义

hi_venc_chn_attr = {"venc_attr": hi_venc_attr, "rc_attr": hi_venc_rc_attr, "gop_attr": hi_venc_gop_attr}

成员

成员名称描述
venc_attr字典,编码器属性。 编码器属性中除通道宽高(pic_width和pic_height)外都是静态属性,一旦创建编码通道成功,静态属性不支持被修改,除非该通道被销毁,重新创建。
rc_attr字典,码率控制器属性。 码率控制器属性首先需要配置RC(Rate Control)模式,JPEG不需要配置码率控制器属性,其它协议类型通道(H.264/H.265)都必须配置。码率控制器属性RC模式必须与编码器属性协议类型匹配。
gop_attr字典,Gop Mode类型的字典。 对于H264、H265协议,需要配置该参数。

父主题: 视频/图像编码

hi_venc_attr

说明

定义编码器属性字典。

定义

hi_venc_attr = {"type": hi_payload_type,
"max_pic_width": max_pic_width,
"max_pic_height": max_pic_height,
"buf_size": buf_size,
"profile": profile,
"is_by_frame": is_by_frame,
"pic_width": pic_width,
"pic_height": pic_height,
"h264_attr":hi_venc_h264_attr} # attributes of H264e

hi_venc_attr = {"type": type,
"max_pic_width": max_pic_width,
"max_pic_height": max_pic_height,
"buf_size": buf_size,
"profile": profile,
"is_by_frame": is_by_frame,
"pic_width": pic_width,
"pic_height": pic_height,
"h265_attr":hi_venc_h265_attr} # attributes of H265e

hi_venc_attr = {"type": hi_payload_type,
"max_pic_width": max_pic_width,
"max_pic_height": max_pic_height,
"buf_size": buf_size,
"profile": profile,
"is_by_frame": is_by_frame,
"pic_width": pic_width,
"pic_height": pic_height,
"jpeg_attr":hi_venc_jpeg_attr} # attributes of jpeg

hi_venc_attr = {"type": hi_payload_type,
"max_pic_width": max_pic_width,
"max_pic_height": max_pic_height,
"buf_size": buf_size,
"profile": profile,
"is_by_frame": is_by_frame,
"pic_width": pic_width,
"pic_height": pic_height,
"prores_attr":hi_venc_prores_attr} # attributes of prores

成员

成员名称描述
type整型,编码协议类型。
max_pic_width整型,编码图像最大宽度,静态属性,必须是2的整数倍。 取值范围:[MIN_WIDTH, MAX_WIDTH],以像素为单位。MIN_WIDTH、MAX_WIDTH,分别表示编码通道支持的最小宽度、最大宽度,参见表1
max_pic_height整型,除jpeg协议外,编码图像最大高度,静态属性,必须是2的整数倍。 取值范围:[MIN_HEIGHT, MAX_HEIGHT],以像素为单位。MIN_HEIGHT、MAX_HEIGHT分别表示编码通道支持的最小高度、最大高度,参见表1
buf_size整型,码流buffer大小,单位为Byte,静态属性。
- 调用acl.himpi.venc_send_jpege_frame接口发送原始图像进行图像编码时,在创建通道时,buf_size参数值必须设置为0。
- 调用acl.himpi.venc_send_frame接口发送原始图像进行视频或图像编码时,在创建通道时,buf_size参数值必须设置为64的整数倍,取值范围:[Min, Max],以Byte为单位。
- 视频编码场景下,Min当前表示32*1024,Max当前表示1*1024*1024*1024。 用户可以在创建通道时,合理设置每个通道的buf_size,以节省内存使用开销,推荐将buf_size设置为:原图宽*原图高*3/2后再64对齐,但buf_size依然需要在[Min, Max]范围内。 视频编码场景下,若buf_size设置的不合理,可能出现以下异常情况:
- 反复重编,进而导致编码时延变长、性能下降、图像质量下降。
- 编码失败,获取不到编码结果。
- 图像编码场景下,如果原图格式为YUV420,Min值为原图宽16对齐*原图高16对齐*3/2,如果原图格式为YUV422 Packed,Min值为原图宽16对齐*原图高16对齐*2。Max当前表示1*1024*1024*1024。 用户可以在创建通道时根据业务场景中图片的实际最大分辨率,合理设置每个通道的buf_size,以节省内存使用开销,推荐将buf_size设置为**:原图宽*原图高*倍数**,倍数推荐为5。 例如:用户图片的分辨率有720p(1280*720)、1080p(1080*1920)、4K(3840*2160)大小的图片,需要的buf_size应按照4k配置:3840*2160*5。 图片编码场景下,buf_size最小值为320*240*5 ,防止小分辨率场景下,buffer容易被占满,影响编码功能执行,例如:用户图片的最大分辨率为128*128,推荐用户将buf_size设置为320*240*5。
profile整型,编码的等级,静态属性。
- H.264 取值范围:[0, 3]。
- 0:Baseline。当取值为该值时,不支持编码B帧。
- 1:Main Profile。
- 2:High Profile。
- H.265 取值范围:[0, 1]。
- 0:Main Profile。
- 1:Main 10 Profile,预留值,暂不支持。
- Jpeg 取值范围:0(表示Baseline)。
is_by_frame整型,帧/包模式获取码流,静态属性。
- HI_TRUE:按帧获取。
- HI_FALSE:按包获取。
pic_width编码通道宽度,必须是MIN_ALIGN的整数倍。通道创建后,不支持修改。 取值范围:[MIN_WIDTH, MAX_WIDTH],以像素为单位。MIN_WIDTH、MAX_WIDTH、MIN_ALIGN分别表示编码通道支持的最小宽度、最大宽度、最小对齐单元(像素),参见表1。 JPEG通道宽高的设置要满足:pic_width*pic_height ≤ max_pic_width*max_pic_height。
pic_height除jpeg协议外,编码通道高度,必须是MIN_ALIGN的整数倍。通道创建后,不支持修改。 取值范围:[MIN_HEIGHT, MAX_HEIGHT],以像素为单位。MIN_HEIGHT、MAX_HEIGHT、MIN_ALIGN分别表示编码通道支持的最小高度、最大高度、最小对齐单元(像素),参见表1。 JPEG通道宽高的设置要满足:pic_width*pic_height ≤ max_pic_width*max_pic_height。
h264_attr编码协议的属性。
h265_attr编码协议的属性。
jpeg_attr编码协议的属性。 预留参数,暂不支持。
prores_attr编码协议的属性。 预留参数,暂不支持。

参考信息

MIN_WIDTH、MAX_WIDTH、MIN_HEIGHT、MAX_HEIGHT、MIN_ALIGN分别表示编码通道支持的最小宽度、最大宽度、最小高度、最大高度、最小对齐单元(像素)。

表1 编码通道宽高

W/H (pixel)H.264H.265JPEG
MIN_WIDTH12812832
MAX_WIDTH409640968192
MIN_HEIGHT12812832
MAX_HEIGHT409640968192
MIN_ALIGN222

父主题: 视频/图像编码

hi_venc_rc_attr

说明

定义编码通道码率控制器属性。

定义

hi_venc_rc_attr = {"rc_mode": rc_mode, # RW; the type of rc
"h264_cbr": hi_venc_h264_cbr}

hi_venc_rc_attr = {"rc_mode": rc_mode, # RW; the type of rc
"h264_vbr": hi_venc_h264_vbr}

hi_venc_rc_attr = {"rc_mode": rc_mode, # RW; the type of rc
"h264_avbr": hi_venc_h264_avbr}

hi_venc_rc_attr = {"rc_mode": rc_mode, # RW; the type of rc
"h264_qvbr": hi_venc_h264_qvbr}

hi_venc_rc_attr = {"rc_mode": rc_mode, # RW; the type of rc
"h264_cvbr": hi_venc_h264_cvbr}

hi_venc_rc_attr = {"rc_mode": rc_mode, # RW; the type of rc
"h264_fixqp": hi_venc_h264_fixqp}

hi_venc_rc_attr = {"rc_mode": rc_mode, # RW; the type of rc
"h264_qpmap": hi_venc_h264_qpmap}

hi_venc_rc_attr = {"rc_mode": rc_mode, # RW; the type of rc
"mjpeg_cbr": hi_venc_mjpeg_cbr}

hi_venc_rc_attr = {"rc_mode": rc_mode, # RW; the type of rc
"mjpeg_vbr": hi_venc_mjpeg_vbr}

hi_venc_rc_attr = {"rc_mode": rc_mode, # RW; the type of rc
"mjpeg_fixqp": hi_venc_mjpeg_fixqp}

hi_venc_rc_attr = {"rc_mode": rc_mode, # RW; the type of rc
"h265_cbr": hi_venc_h265_cbr}

hi_venc_rc_attr = {"rc_mode": rc_mode, # RW; the type of rc
"h265_vbr": hi_venc_h265_vbr}

hi_venc_rc_attr = {"rc_mode": rc_mode, # RW; the type of rc
"h265_avbr": hi_venc_h265_avbr}

hi_venc_rc_attr = {"rc_mode": rc_mode, # RW; the type of rc
"h265_qvbr": hi_venc_h265_qvbr}

hi_venc_rc_attr = {"rc_mode": rc_mode, # RW; the type of rc
"h265_cvbr": hi_venc_h265_cvbr}

hi_venc_rc_attr = {"rc_mode": rc_mode, # RW; the type of rc
"h265_fixqp": hi_venc_h265_fixqp}

hi_venc_rc_attr = {"rc_mode": rc_mode, # RW; the type of rc
"h265_qpmap": hi_venc_h265_qpmap}

成员

成员名称描述
rc_modeRC模式。
- CBR(Constant Bit Rate)固定比特率。即在码率统计时间内保证编码码率平稳。
- VBR(Variable Bit Rate)可变比特率,即允许在码率统计时间内编码码率波动,从而保证编码图像质量平稳。
- AVBR(Adaptive Variable Bit Rate) 自适应可变比特率,即允许在码率统计时间内编码码率波动,从而保证编码图像质量平稳。码率控制内部会检测当前场景的运动静止状态,在运动时用较高码率编码,在静止时主动降低目标码率。
- QVBR (Quality Variable Bit Rate)基于主观图像质量的可变比特率,该码控调节方式是利用实时统计的 PSNR(图像质量客观评价指标)的大小来动态调整码率,从而保证编码图像质量平稳。在PSNR较小时主动升高目标码率,PSNR较大时主动降低目标码率。
- CVBR (Constrained Variable Bit Rate) 是以VBR为基础,旨在提供平稳的图像质量的码控算法,同时对VBR的码率进行限制,以满足传输带宽以及存储空间的要求。具体来说, CVBR设置了瞬时,短期与长期码率的限制。其中,瞬时码率的限制保证了网络带宽对传输的要求;长期码率限制保证了在长时间视频录制时,存储设备有足够的空间储存数据;同时,短期码率会根据长期码率的设置和实际使用情况进行调节,以在场景复杂的情况下提供更加平稳的图像质量,并在场景简单时节省码率。
- FIXQP(Fix Quantisation Parameter)固定QP值。在码率统计时间内,编码图像所有宏块QP值相同,采用用户设定的图像QP值,I帧和P帧的QP值可以分别设置。
对于不同协议,相同 RC 模式的属性变量基本一致。表1介绍了几种RC模式的公共的属性。
h264_cbr字典,H.264协议编码通道CBR模式属性。
h264_vbr字典,H.264协议编码通道VBR模式属性。
h264_avbr字典,H.264协议编码通道AVBR模式属性。
h264_qvbr字典,H.264协议编码通道QVBR模式属性。
h264_cvbr字典,H.264协议编码通道CVBR模式属性。
h264_fixqp字典,H.264协议编码通道FIXQP模式属性。
h264_qpmap字典,H.264协议编码通道QPMAP模式属性。预留参数,暂不支持。
mjpeg_fixqp字典,Mjpeg(Motion Joint Photographic Experts Group)协议编码通道FIXQP模式属性。预留参数,暂不支持。
mjpeg_cbr字典,Mjpeg协议编码通道CBR模式属性。预留参数,暂不支持。
mjpeg_vbr字典,Mjpeg协议编码通道VBR模式属性。预留参数,暂不支持。
h265_cbr字典,H.265协议编码通道CBR模式属性。
h265_vbr字典,H.265协议编码通道VBR模式属性。
h265_avbr字典,H.265协议编码通道AVBR模式属性。
h265_qvbr字典,H.265协议编码通道QVBR模式属性。
h265_cvbr字典,H.265协议编码通道CVBR模式属性。
h265_fixqp字典,H.265协议编码通道FIXQP模式属性。
h265_qpmap字典,H.265协议编码通道QPMAP模式属性。预留参数,暂不支持。

参考信息

表1 码率控制器属性的约束

RC 模式GOPStatTime(s)FrmRate(src_frame_rate/dst_frame_rate)
CBR≥1≥1src_frame_rate ≥ dst_frame_rate
VBR≥1≥1src_frame_rate ≥ dst_frame_rate
AVBR≥1≥1src_frame_rate ≥ dst_frame_rate
FIXQP≥1≥1src_frame_rate ≥ dst_frame_rate
QPMAP≥1≥1src_frame_rate ≥ dst_frame_rate

父主题: 视频/图像编码

hi_venc_rc_mode

说明

定义编码通道码率控制器模式。

定义

HI_VENC_RC_MODE_H264_CBR = 1
HI_VENC_RC_MODE_H264_VBR = 2
HI_VENC_RC_MODE_H264_AVBR = 3
HI_VENC_RC_MODE_H264_QVBR = 4
HI_VENC_RC_MODE_H264_CVBR = 5
HI_VENC_RC_MODE_H264_FIXQP = 6
HI_VENC_RC_MODE_H264_QPMAP = 7
HI_VENC_RC_MODE_MJPEG_CBR = 8
HI_VENC_RC_MODE_MJPEG_VBR = 9
HI_VENC_RC_MODE_MJPEG_FIXQP = 10
HI_VENC_RC_MODE_H265_CBR = 11
HI_VENC_RC_MODE_H265_VBR = 12
HI_VENC_RC_MODE_H265_AVBR = 13
HI_VENC_RC_MODE_H265_QVBR = 14
HI_VENC_RC_MODE_H265_CVBR = 15
HI_VENC_RC_MODE_H265_FIXQP = 16
HI_VENC_RC_MODE_H265_QPMAP = 17
HI_VENC_RC_MODE_BUTT = 18

成员

成员名称描述
HI_VENC_RC_MODE_H264_CBRH.264 CBR模式。
HI_VENC_RC_MODE_H264_VBRH.264 VBR模式。
HI_VENC_RC_MODE_H264_AVBRH.264 AVBR模式。
HI_VENC_RC_MODE_H264_QVBRH.264 QVBR模式。
HI_VENC_RC_MODE_H264_CVBRH.264 CVBR模式。
HI_VENC_RC_MODE_H264_FIXQPH.264 FIXQP模式。
HI_VENC_RC_MODE_H264_QPMAPH.264 QPMAP模式。预留参数,暂不支持。
HI_VENC_RC_MODE_MJPEG_CBRMJPEG CBR模式。预留参数,暂不支持。
HI_VENC_RC_MODE_MJPEG_VBRMJPEG VBR模式。预留参数,暂不支持。
HI_VENC_RC_MODE_MJPEG_FIXQPMJPEG FIXQP模式。预留参数,暂不支持。
HI_VENC_RC_MODE_H265_CBRH.265 CBR模式。
HI_VENC_RC_MODE_H265_VBRH.265 VBR模式。
HI_VENC_RC_MODE_H265_AVBRH.265 AVBR模式。
HI_VENC_RC_MODE_H265_QVBRH.265 QVBR模式。
HI_VENC_RC_MODE_H265_CVBRH.265 CVBR模式。
HI_VENC_RC_MODE_H265_FIXQPH.265 FIXQP模式。
HI_VENC_RC_MODE_H265_QPMAPH.265 QPMAP模式。预留参数,暂不支持。

父主题: 视频/图像编码

在线提单