Camera
获取的是 NV21
格式的图像数据, 先将 NV21
格式的图像数据转为 I420
格式的图像数据 , 再将 I420
格式的图像数据编码为 H.264
格式的视频数据的过程。
1,首先,声明x264
编码器参数,通过x264_param_t x264Param
的方式,之后对齐进行赋值
2,设置默认的编码器参数,调用x264_param_default_preset
方法,可以设置默认参数。
3,3个参数,第一个是x264参数指针,第二个是编码速度,因为是直播,所以采用最快ultrafast
,第三个是编码场景设置,直播一般选用最低延迟的zerolatency
4,接着设置编码器的编码规则,x264Param.i_level_idc = 32
; 32
是3.2
编码规格,有一个表格上详细标出什么规格下有什么样的码率,帧率要求。
5,然后是设置x264
编码器的编码图像的数据格式,x264Param.i_csp = X264_CSP_I420;
将camera
的支持的宽高设置给先x264
的i_width
和i_height
6,接着设置码率模式相关参数,有恒定质量,恒定码率,ABR
平均码率三个参数,直播一般设置为ABR
平均码率
7, 设置码率i_bitrat
, 最大码率i_vbv_max_bitrat
,还有码率控制的缓冲区大小i_vbv_buffer_size
8,设置帧率相关参数,帧率是个有理数,使用分数形式表示,i_fps_num
为分母,i_fps_den
为分子
9,设置关键帧是否带spspps
数据,x264Param.b_repeat_headers = 1
; 直播的话设置为1
10,最后再设置是否开启多线程i_thread = 1;