+
 新版

【求助】用libx264编码yuv420P为h264,始终只有1个I帧。

志尧仔 发布于 2016/07/14 21:47
阅读 2K+
收藏 0

如题。工程ffmpeg+libx264+faac。

首先取输入视频的源数据为YUV420P,然后通过libx264编码成.264文件。然而用Elecard StreamEye Tools分析发现该.264只有1个关键帧,播放起来是没有问题,但是后面封装成mp4会受到影响(拉动进度条时花一下屏)。

我这里的参数如下:

    /* 初始化x264编码器 */
x264_param_t param;
x264_param_default_preset(&param,"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(&param,"bashline");


/* 应用完就打开 */
_xEncoder = x264_encoder_open(&param);


虽然很多参数不用写,但是实验时还是一个一个尝试,导致现在累积了很多。

有人知道这是为什么吗?我的输入视频是每30帧一个I帧,按理来说编出来的264文件不会只有1关键帧按才对。求指导

加载中
0
x
xdsnet_g
关键帧速率是可调的参数啊   -keyint_min 60 可以设置为至少60帧间隔就有一帧关键帧,你可以根据需要进行设置啊。
0
小四掰
楼主,我也遇到同样的问题了,你当初是怎么解决的啊?
0
micoyu
micoyu

gop没设置的问题

 

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部