一、线程参数概览
参数名称 | 参数类型 | 参数含义 | 参数配置 |
cpu | unsigned int | cpu型号 | 根据编译环境自动确定,无需单独配置。 |
i_threads | int | 并行编码线程数 | b_sliced_threads为0时:帧级并行编码线程数 b_sliced_threads为1时:slice级并行编码线程数 |
i_lookahead_threads | int | 计算slicetype_slice_cost使用线程数。 | 配置成0,算法会根据帧级线程数和slice线程数,自动分配。 |
b_sliced_threads | int | 是否开启基于slice分片的多线程 | open:i_threads为slice级多线程数。 开启多slice会提高一帧的编码速度,但是会略微降低编码质量。 |
b_deterministic | int | 是否允许非确定性时线程优化 | 默认开启,可减少多线程的开销。 |
b_cpu_independent | int | 强制采用典型行为,而不是采用独立于cpu的优化算法 | open:执行普通的C语言。 close:使用intel simd指令集,做并行运算 |
i_sync_lookahead | int | 前向参考帧数。用于配置线程预测的帧缓存大小。 | 实时视频会议场景,建议配置成0。否则会增加首帧延时时间。 |
二、参数说明
1、i_threads可以是帧级多线程,也可以是slice级多线程。需要根据实际应用场景确定:视频会议这种编码实时性要求很高的场景,建议使用slice级多线程功能;视频点播这种对编码效率要求很高的场景,建议使用帧级多线程功能。
备注:webrtc对slice级多线程的QOS支持不友好。webrtc默认非I帧视频,一帧里面只能有一个NAL。在帧完整性判断那里,也是按照这个思路设计的。所以若不进行特殊优化,在webrtc里面开启slice级多线程,弱网下,会有大量花屏现象。
2、i_sync_lookahead,实时视频会议场景,建议配置成0。否则会增加首帧延时时间。