今天,当我在代码块中运行ffmpeg example c程序时,出现了一个错误:

invalid conversion from int to avcodecid[-fpermissive]

我把代码的一部分放在这里:
static AVCodec **codec;
static AVCodecContext *c= NULL;
static int  ret,   got_output;
static FILE *f;
static AVFrame *frame;
static AVPacket pkt;
static uint8_t endcode[] = { 0, 0, 1, 0xb7 };
enum AVCodecID codec_id;

*codec = avcodec_find_encoder(codec_id);

无论我使用*codec还是codec,它都会给出相同的错误,我已经检查了我的opencv和ffmpeg版本,所有的最新版本都是2.4.10opencv和2.5.3ffmpeg。
如果我单击错误,它会将我指向另一个文件avcode.h,给出错误
正在初始化“AVcodec*acvodec_find_encoder(AVCodeciD)”的agument 1[-fpermissive]
在文件的这一行
frame = avcodec_alloc_frame();

最佳答案

此错误消息
从int到avcodecid的转换无效[-fppermissive]
意味着没有从int到类型enum AVCodecID的隐式转换。所以您需要显式地将整数转换为枚举的类型。
我想你包括了所有必需的标题,不是吗?
此错误消息
正在初始化AVcodec的agument 1*
acvodec_find_编码器(AVCodeciD)'[-fpermitive]
意味着您对函数调用使用了错误的参数类型。在调用函数声明之前,必须检查它并为其参数提供正确的参数。

09-08 00:22