如何强制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/

你可能感兴趣的:(ffmpeg)