今天,当我在代码块中运行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]
意味着您对函数调用使用了错误的参数类型。在调用函数声明之前,必须检查它并为其参数提供正确的参数。