如何强制ffmpeg编码时输出一个关键帧
如何强制ffmpeg编码时输出一个关键帧
AVCodecContext *c //编码器环境句柄AVFrame* f //需要编码的一帧视频
/*在avcodec.h文件中有这样的定义#define FF_I_TYPE 1 ///< Intra#define FF_P_TYPE 2 ///< Predicted#define FF_B_TYPE 3 ///< Bi-dir predicted#define FF_S_TYPE 4 ///< S(GMC)-VOP MPEG4#define FF_SI_TYPE 5 ///< Switching Intra#define FF_SP_TYPE 6 ///< Switching Predicted#define FF_BI_TYPE 7*/
在编码前设置f->pict_type=FF_I_TYPE; f->key_frame=1; 注:该帧为I帧时,f->pict_type==FF_I_TYPE && f->key_frame==1
然后编码*outsize = avcodec_encode_video(c, temp, outbuf_size, f);
则编码之后通过如下参数判断是否为关键帧:key_frame=c->coded_frame->key_frame; pict_type=c->coded_frame->pict_type;key_frame==FF_I_TYPE && pict_type==1
参考: