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

来源:互联网 发布:软件项目评审表模板 编辑:程序博客网 时间:2024/06/04 19:21
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
然后编码时传入f:*outsize = avcodec_encode_video(c, temp, outbuf_size, f);
则编码之后通过如下参数判断是否为关键帧:key_frame=c->coded_frame->key_frame; pict_type=c->coded_frame->pict_type;if(pict_type==FF_I_TYPE && key_frame==1)
{
        .......
}
原文链接:http://blog.csdn.net/maopig/article/details/6766024
3 0