首页 > 代码库 > 如何强制ffmpeg编码时输出一个关键帧

如何强制ffmpeg编码时输出一个关键帧

http://blog.csdn.net/ashlingr/article/details/7829429

如何强制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
参考:http://www.ffmpeg.com.cn/index.php/