【Android RTMP】x264 编码器初始化及设置 ( 获取 x264 编码参数 | 编码规格 | 码率 | 帧率 | B帧个数 | 关键帧间隔 | 关键帧解码数据 SPS PPS )(二)

三、 设置 x264 编码器编码规格


1 . 设置 x264 编码器编码规格 : 每个编码规格都有对应的性能指标要求 , 如下图的表格 , 设置的 32 编码规则表示其中的 3.2 级别的 H.264 参数性能 ;


// 编码规格设定, 32 对应的是 3.2 编码规格, 该规格下有指定的 码率, 帧率要求
x264Param.i_level_idc = 32;



2 . H.264 编码规格 :


【Android RTMP】x264 编码器初始化及设置 ( 获取 x264 编码参数 | 编码规格 | 码率 | 帧率 | B帧个数 | 关键帧间隔 | 关键帧解码数据 SPS PPS )(二)






四、 设置 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; //分母





上一篇:WannaCry病毒阴魂不散:本田一家工厂受影响停产一天


下一篇:Spring的bean、dao、service、action的生命周期