3.2版本的ffmpeg中使用了新的API,avcodec_parameters_to_context来初始化AVCodecContext结构体,但是这样初始化的结构体比AVStream中的codec成员少了很多信息,导致后续使用avcodec_send_packet函数时出错,有没有人遇到过相似的问题?
使用
代码如下
video_codec = avcodec_find_decoder(param->codec_id);
if (!video_codec)
{
fprintf(stderr, "ERROR: Finding video codec FAILED!\n");
goto end;
}
video_codec_context = avcodec_alloc_context3(video_codec);//使用此句会出现问题
video_codec_context = stream->codec;//使用此句能够正常解码
if (!video_codec_context)
{
fprintf(stderr, "ERROR: Allocating video codec FAILED!\n");
goto end;
}
ret = avcodec_open2(video_codec_context, video_codec, NULL);
if (ret < 0)
{
fprintf(stderr, "ERROR: Opening video codec FAILED!\n");
goto end;
}
ret = avcodec_parameters_to_context(video_codec_context, param);
if (ret < 0)
{
fprintf(stderr, "ERROR: Filling video codec context FAILED!\n");
goto end;
}
错误如下: