opencv交叉编译时添加ffmpeg显示no

2 篇文章 0 订阅
1 篇文章 0 订阅

之前在arm板上移植了opencv,但是在使用摄像头处理时出现视频流的错误,于是返回cmake界面看生成日志发现ffmpeg压根没配置成功,甚至都还没装。。。(折腾几天发现并不是ffmpeg的问题,原因是摄像头选错了,设置为video1就可以了,但是装了就装了吧)

FFMPEG:                      NO
      avcodec:                   NO
      avformat:                  NO
      avutil:                    NO
      swscale:                   NO
      avresample:                NO

于是按照这个帖子装好了ffmpeg,贴一下configure

./configure --prefix=/home/myzr/my-imx6/02_source/ffmpeg-4.1/_install --disable-yasm  --disable-ffmpeg --disable-debug --disable-doc --disable-ffplay --disable-ffprobe --enable-version3 --enable-shared --enable-avresample --enable-nonfree --enable-gpl --enable-libx264 --enable-pthreads --enable-decoder=h264 --enable-parser=h264 --enable-demuxer=h264 --enable-protocol=file --cross-prefix=arm-poky-linux-gnueabi- --target-os=linux --arch=arm --enable-cross-compile --cc="arm-poky-linux-gnueabi-gcc -march=armv7ve -mfpu=neon -mfloat-abi=hard -mcpu=cortex-a7 --sysroot=/opt/fsl-imx-fb-glibc-x86_64-meta-toolchain-qt5-cortexa7hf-neon-toolchain-4.1.15-2.1.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi" --extra-cflags=-I/home/myzr/my-imx6/02_source/x264-snapshot-20190224-2245/_install/include --extra-ldflags=-L/home/myzr/my-imx6/02_source/x264-snapshot-20190224-2245/_install/lib --extra-libs=-ldl

由于是源码交叉编译系统仍然找不到,因此将CMAKE_FIND_ROOT_PATH改为install路径,结果出现

FFMPEG:                      NO
      avcodec:                   YES (ver 56.60.100)
      avformat:                  YES (ver 56.40.101)
      avutil:                    YES (ver 54.31.100)
      swscale:                   YES (ver 3.1.101)
      avresample:                YES (ver 2.1.0)

找了很多方法还是不行,受这条评论指导,将源码中的文件修改以显示错误,发现原来是无法找到x264的库,反应过来x264和ffmpeg的库需要安装在同一个目录以供cmake查找,完成之后显示正常。

FFMPEG:                      YES
      avcodec:                   YES (ver 56.60.100)
      avformat:                  YES (ver 56.40.101)
      avutil:                    YES (ver 54.31.100)
      swscale:                   YES (ver 3.1.101)
      avresample:                YES (ver 2.1.0)

这样配置之后在make时又出现了找不到ffmpeg库的情况:

/opt/fsl-imx-fb-glibc-x86_64-meta-toolchain-qt5-cortexa7hf-neon-toolchain-4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/libexec/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/real-ld: warning: libavresample.so.4, needed by ../../lib/libopencv_videoio.so.3.4.0, not found (try using -rpath or -rpath-link)
../../lib/libopencv_videoio.so.3.4.0: undefined reference to `av_init_packet@LIBAVCODEC_58'
../../lib/libopencv_videoio.so.3.4.0: undefined reference to `avformat_get_riff_video_tags@LIBAVFORMAT_58'
../../lib/libopencv_videoio.so.3.4.0: undefined reference to `avformat_get_mov_video_tags@LIBAVFORMAT_58'
../../lib/libopencv_videoio.so.3.4.0: undefined reference to `avcodec_find_decoder@LIBAVCODEC_58'

应该是搜索路径还有问题,暂时先把ffmpeg交叉编译生成文件复制到下面的目录下,即编译器的usr路径下,就不会报错了。

/opt/fsl-imx-fb-glibc-x86_64-meta-toolchain-qt5-cortexa7hf-neon-toolchain-4.1.15-2.1.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr

PS:在使用cmake时发现cmake会保存上次的配置,所以检索ffmpeg是否安装的时候路径更改之后cmake依然会使用旧的路径,无法彻底清除cache,很困扰现在也没解决这个问题

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值