我在mac上编译opencv4.3.0,编译过程中报错了,但是由于我不太懂,所以不知道是哪里引起的
In file included from /Users/mac/Downloads/opencv-4.3.0.2/modules/videoio/src/cap_ffmpeg.cpp:50:
/Users/mac/Downloads/opencv-4.3.0.2/modules/videoio/src/cap_ffmpeg_impl.hpp:541:5: error: unknown type name 'AVBSFContext'; did you mean 'AVIOContext'?
AVBSFContext* bsfc;
AVIOContext
/usr/local/Cellar/ffmpeg/5.0/include/libavformat/avio.h:318:3: note: 'AVIOContext' declared here
} AVIOContext;
^
In file included from /Users/mac/Downloads/opencv-4.3.0.2/modules/videoio/src/cap_ffmpeg.cpp:50:
/Users/mac/Downloads/opencv-4.3.0.2/modules/videoio/src/cap_ffmpeg_impl.hpp:602:34: error: no member named 'codec' in 'AVStream'
avcodec_close( video_st->codec );
/Users/mac/Downloads/opencv-4.3.0.2/modules/videoio/src/cap_ffmpeg_impl.hpp:652:9: error: use of undeclared identifier 'av_bsf_free'; did you mean 'av_opt_free'?
av_bsf_free(&bsfc);
av_opt_free
/usr/local/Cellar/ffmpeg/5.0/include/libavutil/opt.h:456:6: note: 'av_opt_free' declared here
void av_opt_free(void *obj);
^
In file included from /Users/mac/Downloads/opencv-4.3.0.2/modules/videoio/src/cap_ffmpeg.cpp:50:
/Users/mac/Downloads/opencv-4.3.0.2/modules/videoio/src/cap_ffmpeg_impl.hpp:807:39: error: unknown type name 'AVLockOp'
static int LockCallBack(void **mutex, AVLockOp op)
^
/Users/mac/Downloads/opencv-4.3.0.2/modules/videoio/src/cap_ffmpeg_impl.hpp:866:9: error: use of undeclared identifier 'av_register_all'
av_register_all();
^
/Users/mac/Downloads/opencv-4.3.0.2/modules/videoio/src/cap_ffmpeg_impl.hpp:886:9: error: use of undeclared identifier 'av_lockmgr_register'
av_lockmgr_register(NULL);
^
/Users/mac/Downloads/opencv-4.3.0.2/modules/videoio/src/cap_ffmpeg_impl.hpp:931:22: error: assigning to 'AVInputFormat *' from 'const AVInputFormat *' discards qualifiers
input_format = av_find_input_format(entry->value);
/Users/mac/Downloads/opencv-4.3.0.2/modules/videoio/src/cap_ffmpeg_impl.hpp:959:47: error: no member named 'codec' in 'AVStream'
AVCodecContext *enc = ic->streams[i]->codec;
/Users/mac/Downloads/opencv-4.3.0.2/modules/videoio/src/cap_ffmpeg_impl.hpp:1005:25: error: assigning to 'AVCodec *' from 'const AVCodec *' discards qualifiers
codec = avcodec_find_decoder(enc->codec_id);
/Users/mac/Downloads/opencv-4.3.0.2/modules/videoio/src/cap_ffmpeg_impl.hpp:1007:25: error: assigning to 'AVCodec *' from 'const AVCodec *' discards qualifiers
codec = avcodec_find_decoder_by_name(av_dict_get(dict, "video_codec", NULL, 0)->value);
/Users/mac/Downloads/opencv-4.3.0.2/modules/videoio/src/cap_ffmpeg_impl.hpp:1106:19: error: unknown type name 'AVBitStreamFilter'
const AVBitStreamFilter * bsf = av_bsf_get_by_name(filterName);
/Users/mac/Downloads/opencv-4.3.0.2/modules/videoio/src/cap_ffmpeg_impl.hpp:1106:45: error: use of undeclared identifier 'av_bsf_get_by_name'
const AVBitStreamFilter * bsf = av_bsf_get_by_name(filterName);
/Users/mac/Downloads/opencv-4.3.0.2/modules/videoio/src/cap_ffmpeg_impl.hpp:1118:43: error: no member named 'par_in' in 'AVIOContext'
avcodec_parameters_copy(bsfc->par_in, ic->streams[video_stream]->codecpar);
/Users/mac/Downloads/opencv-4.3.0.2/modules/videoio/src/cap_ffmpeg_impl.hpp:1119:19: error: use of undeclared identifier 'av_bsf_init'
err = av_bsf_init(bsfc);
^
/Users/mac/Downloads/opencv-4.3.0.2/modules/videoio/src/cap_ffmpeg_impl.hpp:1143:19: error: use of undeclared identifier 'av_bsf_send_packet'; did you mean 'avcodec_send_packet'?
int err = av_bsf_send_packet(bsfc, &packet);
avcodec_send_packet
/usr/local/Cellar/ffmpeg/5.0/include/libavcodec/avcodec.h:2581:5: note: 'avcodec_send_packet' declared here
int avcodec_send_packet(AVCodecContext *avctx, const AVPacket *avpkt);
^
In file included from /Users/mac/Downloads/opencv-4.3.0.2/modules/videoio/src/cap_ffmpeg.cpp:50:
/Users/mac/Downloads/opencv-4.3.0.2/modules/videoio/src/cap_ffmpeg_impl.hpp:1143:38: error: cannot initialize a parameter of type 'AVCodecContext *' with an lvalue of type 'AVIOContext *'
int err = av_bsf_send_packet(bsfc, &packet);
^
/usr/local/Cellar/ffmpeg/5.0/include/libavcodec/avcodec.h:2581:41: note: passing argument to parameter 'avctx' here
int avcodec_send_packet(AVCodecContext *avctx, const AVPacket *avpkt);
^
In file included from /Users/mac/Downloads/opencv-4.3.0.2/modules/videoio/src/cap_ffmpeg.cpp:50:
/Users/mac/Downloads/opencv-4.3.0.2/modules/videoio/src/cap_ffmpeg_impl.hpp:1149:15: error: use of undeclared identifier 'av_bsf_receive_packet'; did you mean 'avcodec_receive_packet'?
err = av_bsf_receive_packet(bsfc, &packet_filtered);
avcodec_receive_packet
/usr/local/Cellar/ffmpeg/5.0/include/libavcodec/avcodec.h:2657:5: note: 'avcodec_receive_packet' declared here
int avcodec_receive_packet(AVCodecContext *avctx, AVPacket *avpkt);
^
In file included from /Users/mac/Downloads/opencv-4.3.0.2/modules/videoio/src/cap_ffmpeg.cpp:50:
/Users/mac/Downloads/opencv-4.3.0.2/modules/videoio/src/cap_ffmpeg_impl.hpp:1149:37: error: cannot initialize a parameter of type 'AVCodecContext *' with an lvalue of type 'AVIOContext *'
err = av_bsf_receive_packet(bsfc, &packet_filtered);
/usr/local/Cellar/ffmpeg/5.0/include/libavcodec/avcodec.h:2657:44: note: passing argument to parameter 'avctx' here
int avcodec_receive_packet(AVCodecContext *avctx, AVPacket *avpkt);
^
In file included from /Users/mac/Downloads/opencv-4.3.0.2/modules/videoio/src/cap_ffmpeg.cpp:50:
/Users/mac/Downloads/opencv-4.3.0.2/modules/videoio/src/cap_ffmpeg_impl.hpp:1232:45: error: no member named 'codec' in 'AVStream'
avcodec_decode_video2(video_st->codec, picture, &got_picture, &packet);
^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
上面是我 make完报的错误,导致我编译失败
我从其他文章中尝试过降低ffmpeg的版本,依然不能解决
求一个解决办法
你把报错发给我看看,