视频流编码配置

最近更新时间:2024-02-19 17:19:11

我的收藏
说明:
SDK 提供多个视频编码参数配置,并支持动态自适应调节,用户可根据视频分辨率和重要性对视频流编码参数进行配置。

配置参数总览

在 streams_conf 的流配置中,可以对视频流的编码参数配置,支持以下参数:
参数
说明
可选
缺省值
备注
encode_width
期望编码宽度
与采集输入宽度 width 一致
SDK 会自动将视频帧变换到指定编码宽度
encode_height
期望编码高度
与采集输入高度 height 一致
SDK 会自动将视频帧变换到指定编码高度
min_width
最低编码宽度
与期望编码宽度 encode_width 一致
SDK 会自动根据网络情况在 [min_width,width] 范围内调整编码宽度,对应编码高度也会按期望编码宽高比保持比例调整。
缺省会固定使用期望编码分辨率,无动态分辨率调整。
bps
期望画质编码码率
(单位 kbps)
该值对应编码器设置编码码率的最大值。
注意:编码器设置码率和输出码率表现可能会出现不一致,具体表现由编码器决定。
min_bps
最低画质编码码率
(单位 kbps)
与期望编码码率bps一致
网络带宽高于 min_bps 时,编码器设置码率会在 [min_bps, bps] 范围内根据网络情况自适应调整
force_min
是否强制最低画质码率
0
0为非强制最低画质码率,网络带宽弱于 min_bps 时,会进一步降低码率,并通过 onErrorEvent 回调提示网络带宽不足;
1为强制最低画质码率,网络带宽弱于 min_bps 时,仍会以最低画质码率编码,可能会引发卡顿
fps
期望输入帧率
该值对应编码器输入的最大帧率,当实际输入帧率高于 fps 时,SDK 会自动降低到 fps 帧率输入到编码器
min_fps
最低编码帧率
25
编码器随编码码率变化会自适应在 [min_fps, fps] 范围内动态调整帧率
当 min_fps 配置与 fps 相同时,动态帧率功能关闭
对画面流畅性强要求场景,建议关闭动态帧率
major
是否为主要视频流
0
该参数用于决定不同类型视频流码率分配的优先级
0 为非主要视频流,码率分配优先级弱于主流
1 为主要视频流,会优先保证码率分配
codec
编码类型
0 为 H264
1 为 H265
2 为 AV1,仅部分芯片平台支持
encoder_type
是否硬编优先
1
0 软编优先,优先采用软编
1 硬编优先,优先采用芯片硬编

码率配置建议

码率配置的画质表现,跟编码器自身实现、编码类型以及使用场景等均密切相关。建议用户可根据实际使用场景以及对画质的要求,尝试调整编码码率参数,来确定出匹配自己场景的较优参数。下表是车辆 5G 远程驾驶场景下,GMSL 相机 + nvidia jetson 芯片编码器(硬编)的码率配置示意,可供参考:
编码分辨率
编码类型
建议 bps 参数值
建议 min_bps 参数值
1920x1080
H265
2500
1500
H264
3000
1800
1280x720
H265
1500
500
H264
2100
700
640x480
H265
420
200
H264
500
200

主流配置建议

主流配置用于有明确视频流优先级区分的场景,例如远程驾驶场景前视画面相对其他画面可能会有更高的优先级。当网络带宽不足时,SDK 会优先保障主流画面画质,牺牲非主流画面画质,带宽极度受限情况下甚至可能会引起非主流画面暂停。建议用户可根据自身产品设计理念,对具有重要性的视频流开启主流配置。当多个视频流同时开启主流时,具有相同的优先级保障。
视频流类型
画质保障
主要视频流
网络带宽受限时,优先保障主流画质。
可以同时有多个主流,不同主流之间优先级相同。
非主要视频流
主流达到基本画质要求后,才会保障非主流视频画质。
当带宽极度受限且关闭强制最低画质(force_min)情况下,为保障主流画质,可能会引起非主流画面暂停。

动态编码参数调整

远端设备 SDK 支持动态对现场设备的编码参数进行实时调整以适应不同场景下对视频流编码的要求,如车辆运行监控场景和车辆远程接管场景下视频编码参数的切换。用户可按需求调用接口进行参数更新,更新过程中视频流不会出现中断。
注意:
为保障视频流画面连续,目前 SDK 暂不支持 codec 和 encoder_type 等编码类型参数调整。编码参数更新接口中待更新编码参数字段缺省时,会保持原有参数值不进行更新。
/*
* @name : TRRO_fieldDeviceEncodeConfig
* @brief : 更新现场设备目标视频流编码参数
* @input : gwid 现场设备id
* streams_id 目标视频流编号
* encode_config 待更新的编码参数,json格式字符串,缺省字段将保持当前值不进行更新。 下面是更新支持的编码参数示意
* {
* "fps": 30,
* "encode_width": 1920,
* "encode_height": 1080,
* "bps": 3000,
* "min_fps": 30,
* "min_bps": 1800,
* "force_min": 0,
* "min_width": 1920
* }
*/
extern "C" TRRO_EXPORT int TRRO_fieldDeviceEncodeConfig(const char* gwid, int streams_id, const char* encode_config);