简单介绍下FFmpeg解码的流程,具体可以参考雷神的博客:点击打开链接
声明变量:
AVCodec *pCodec;
AVCodecContext *pCodecCtx = NULL;
AVPacket packet;
AVFrame *pFrame;
AVCodecID codec_id = AV_CODEC_ID_H264;
AVCodec是包含了编解码器信息的结构体;
AVCodecContext里包含的信息很多,像编解码器的类型,附加信息,视频宽高,参考帧等等;
AVPacket存储压缩编码数据相关信息;
AVFrame存储着码流数据,解码后的原始数据都保存在这里;
AVCodecID指定码流对应标准;
打开文件:
FILE *fp_in = fopen("test.h264", "rb");
if (!fp_in)
{
printf("Could not open input stream\n");
return -1;
}
首先要注册解码器及各种组件,这样才能进行解码:
av_register_all();
通过上面的函数注册好后