三、 设置 x264 编码器编码规格
1 . 设置 x264 编码器编码规格 : 每个编码规格都有对应的性能指标要求 , 如下图的表格 , 设置的 32 编码规则表示其中的 3.2 级别的 H.264 参数性能 ;
// 编码规格设定, 32 对应的是 3.2 编码规格, 该规格下有指定的 码率, 帧率要求 x264Param.i_level_idc = 32;
2 . H.264 编码规格 :
四、 设置 x264 编码器编码图像数据格式
1 . 设置 x264 编码器编码图像数据格式 :
① 编码尺寸设置 : 将 Camera 支持的宽高尺寸 , 设置给该 x264 编码器参数的 i_width , i_height 字段 ;
② 可设置的输入图像格式 : 经过测试 , 只有 X264_CSP_I420 格式能顺利编码成 H.264 视频数据 ;
/* Colorspace type */ #define X264_CSP_MASK 0x00ff /* */ #define X264_CSP_NONE 0x0000 /* Invalid mode */ #define X264_CSP_I400 0x0001 /* monochrome 4:0:0 */ #define X264_CSP_I420 0x0002 /* yuv 4:2:0 planar */ #define X264_CSP_YV12 0x0003 /* yvu 4:2:0 planar */ #define X264_CSP_NV12 0x0004 /* yuv 4:2:0, with one y plane and one packed u+v */ #define X264_CSP_NV21 0x0005 /* yuv 4:2:0, with one y plane and one packed v+u */ #define X264_CSP_I422 0x0006 /* yuv 4:2:2 planar */ #define X264_CSP_YV16 0x0007 /* yvu 4:2:2 planar */ #define X264_CSP_NV16 0x0008 /* yuv 4:2:2, with one y plane and one packed u+v */ #define X264_CSP_YUYV 0x0009 /* yuyv 4:2:2 packed */ #define X264_CSP_UYVY 0x000a /* uyvy 4:2:2 packed */ #define X264_CSP_V210 0x000b /* 10-bit yuv 4:2:2 packed in 32 */ #define X264_CSP_I444 0x000c /* yuv 4:4:4 planar */ #define X264_CSP_YV24 0x000d /* yvu 4:4:4 planar */ #define X264_CSP_BGR 0x000e /* packed bgr 24bits */ #define X264_CSP_BGRA 0x000f /* packed bgr 32bits */ #define X264_CSP_RGB 0x0010 /* packed rgb 24bits */ #define X264_CSP_MAX 0x0011 /* end of list */ #define X264_CSP_VFLIP 0x1000 /* the csp is vertically flipped */ #define X264_CSP_HIGH_DEPTH 0x2000 /* the csp has a depth of 16 bits per pixel component */
2 . 设置 x264 编码器编码图像数据格式代码示例 :
// 设置输入到 x264 编码器的数据格式, 宽度, 高度等参数 x264Param.i_csp = X264_CSP_I420; x264Param.i_width = mWidth; x264Param.i_height = mHeight;
五、 设置 x264 编码器 码率相关参数
码率有三种模式 : X264_RC_CQP 恒定质量 , X264_RC_CRF 恒定码率 , X264_RC_ABR 平均码率 , 这里设置一个平均码率输出 ;
x264Param.rc.i_rc_method = X264_RC_ABR; // 设置码率, 单位是 kbps x264Param.rc.i_bitrate = bitrate / 1000; // 设置最大码率, 单位 kbps, 该配置与 i_vbv_buffer_size 配套使用 x264Param.rc.i_vbv_max_bitrate = bitrate / 1000 * 1.2; // 该配置与 i_vbv_max_bitrate 配置配套使用, 码率控制缓冲区大小 x264Param.rc.i_vbv_buffer_size = bitrate / 1000;
六、 设置 x264 编码器 帧率相关参数
设置 x264 编码器 帧率相关参数 : 设置帧率相关参数 , 帧率是个有理数 , 使用分数形式表示 , 这里分别定义分子和分母 ;
x264Param.i_fps_num = fps; // 分子 x264Param.i_fps_den = 1; // 分母 x264Param.i_timebase_den = x264Param.i_fps_num; //分子 x264Param.i_timebase_num = x264Param.i_fps_den; //分母