如题。工程ffmpeg+libx264+faac。
首先取输入视频的源数据为YUV420P,然后通过libx264编码成.264文件。然而用Elecard StreamEye Tools分析发现该.264只有1个关键帧,播放起来是没有问题,但是后面封装成mp4会受到影响(拉动进度条时花一下屏)。
我这里的参数如下:
/* 初始化x264编码器 */
x264_param_t param;
x264_param_default_preset(¶m,"veryfast","zerolatency");
param.i_threads = ThreadNum;
param.i_width = DESw;
param.i_height = DESheight;
param.i_fps_num = iFPS;
param.i_fps_den = 1;
//param.i_keyint_min = iFPS; //插入关键帧(IDR-FRAME的最小间隔)
param.i_keyint_max = iFPS * 2; //插入关键帧(IDR-FRAME的最大间隔)
param.b_intra_refresh = 1;
param.b_annexb = 1;
param.b_repeat_headers = 1;
param.i_timebase_den = param.i_fps_num;
param.i_timebase_num = param.i_fps_den;
param.i_frame_total = 0; //要编码的总帧数,不知道用0
param.rc.b_mb_tree = 0;
param.i_level_idc = 30;
param.i_frame_reference = 4;
/* 应用上面的设置 */
/* 提示:x264 [error]: invalid profile: bashline是正常的 */
x264_param_apply_profile(¶m,"bashline");
/* 应用完就打开 */
_xEncoder = x264_encoder_open(¶m);
虽然很多参数不用写,但是实验时还是一个一个尝试,导致现在累积了很多。
有人知道这是为什么吗?我的输入视频是每30帧一个I帧,按理来说编出来的264文件不会只有1关键帧按才对。求指导
CentOS
FFmpeg
gop没设置的问题