热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

opencv编译安装时出现报错modules/videoio/src/cap_ffmpeg_impl.hpp:585:34:error:‘AVStream{akastructAVStre

目录1.报错2.报错原因3.卸载当前ffmpeg3.1.卸载apt安装的ffmpeg3.2.卸载编译安装的ffmpeg4.编译安装ffmpeg4.34.1.下载安装包4.2.安装依


目录

        • 1. 报错
        • 2. 报错原因
        • 3. 卸载当前ffmpeg
          • 3.1. 卸载apt安装的ffmpeg
          • 3.2. 卸载编译安装的ffmpeg
        • 4. 编译安装ffmpeg 4.3
          • 4.1. 下载安装包
          • 4.2. 安装依赖
          • 4.3. 编译安装
          • 4.4. 测试ffmpeg
        • 5. 编译安装opencv 4.1.1

在jetson nano上尝试用python调用.so文件,但是报错,报错信息显示是opencv出现问题,遂决定重装opencv。先是编译opencv 3.4.10,报错,后面又重装之前的opencv 4.1.1,居然依旧报错。遂记录。


1. 报错

无论是opencv的3.4.10还是4.1.1,均报同样的错,所以肯定不是opencv的问题。

报错如下

/opt/opencv4/opencv-4.1.1/modules/videoio/src/cap_ffmpeg_impl.hpp:585:34: error: ‘AVStream {aka struct AVStream}’ has no member named ‘codec’avcodec_close( video_st->codec );^~~~~
/opt/opencv4/opencv-4.1.1/modules/videoio/src/cap_ffmpeg_impl.hpp: At global scope:
/opt/opencv4/opencv-4.1.1/modules/videoio/src/cap_ffmpeg_impl.hpp:775:39: error: ‘AVLockOp’ has not been declaredstatic int LockCallBack(void **mutex, AVLockOp op)^~~~~~~~
/opt/opencv4/opencv-4.1.1/modules/videoio/src/cap_ffmpeg_impl.hpp: In function ‘int LockCallBack(void**, int)’:
/opt/opencv4/opencv-4.1.1/modules/videoio/src/cap_ffmpeg_impl.hpp:780:14: error: ‘AV_LOCK_CREATE’ was not declared in this scopecase AV_LOCK_CREATE:^~~~~~~~~~~~~~
/opt/opencv4/opencv-4.1.1/modules/videoio/src/cap_ffmpeg_impl.hpp:780:14: note: suggested alternative: ‘AV_LOG_TRACE’case AV_LOCK_CREATE:^~~~~~~~~~~~~~AV_LOG_TRACE
/opt/opencv4/opencv-4.1.1/modules/videoio/src/cap_ffmpeg_impl.hpp:789:14: error: ‘AV_LOCK_OBTAIN’ was not declared in this scopecase AV_LOCK_OBTAIN:^~~~~~~~~~~~~~
/opt/opencv4/opencv-4.1.1/modules/videoio/src/cap_ffmpeg_impl.hpp:789:14: note: suggested alternative: ‘CLOCK_TAI’case AV_LOCK_OBTAIN:^~~~~~~~~~~~~~CLOCK_TAI
...

报错信息还有很多,但是均指向同一个文件modules/videoio/src/cap_ffmpeg_impl.hpp,考虑ffmpeg出现问题。


2. 报错原因

参考opencv官方论坛上的回答
在这里插入图片描述
在这里插入图片描述
报错原因为ffmpeg版本过高,解决方法为安装ffmpeg 4.4及以前版本。


3. 卸载当前ffmpeg

参考博客《Ubuntu16.04卸载旧的ffmpeg安装新的ffmpeg》


3.1. 卸载apt安装的ffmpeg

如果用apt-get install ffmpeg安装的,使用以下命令卸载

sudo apt-get --purge remove ffmpeg
sudo apt-get --purge autoremove

3.2. 卸载编译安装的ffmpeg

以ffmpeg-4.1为例,进入ffmpeg安装目录,如下

cd ffmpeg-4.1
make uninstall ##删除由make install命令安装的文件
make clean ##只删除make时产生的临时文件
make distclean ##同时删除configure和make产生的临时文件

4. 编译安装ffmpeg 4.3

参考博客《Jetson 环境安装(三):jetson nano配置ffmpeg和nginx(亲测)》


4.1. 下载安装包

这里,我把安装包下载在~/Downloads/路径下,并解压

wget http://www.ffmpeg.org/releases/ffmpeg-4.3.tar.gz
tar -zxvf ffmpeg-4.3.tar.gz

4.2. 安装依赖

如下

sudo apt-get install -y nasm yasm cmake mercurial
sudo apt-get install -y libxcb-xfixes0-dev pkg-config texinfo wget zlib1g-dev
sudo apt-get install -y libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev
sudo apt-get install -y libfreetype6-dev libsdl2-dev libtheora-dev
sudo apt-get install -y autoconf automake build-essential git libass-dev
sudo apt-get install libx264-dev
sudo apt-get install libx265-dev libnuma-dev
sudo apt-get install libvpx-dev

注意,如果安装报错,考虑更换源,我的源如下

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb http://mirrors.ustc.edu.cn/ubuntu-ports bionic main restricted universe multiverse
# deb-src http://mirrors.ustc.edu.cn/ubuntu-ports bionic main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu-ports bionic-updates main restricted universe multiverse
# deb-src http://mirrors.ustc.edu.cn/ubuntu-ports bionic-updates main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu-ports bionic-backports main restricted universe multiverse
# deb-src http://mirrors.ustc.edu.cn/ubuntu-ports bionic-backports main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu-ports bionic-security main restricted universe multiverse
# deb-src http://mirrors.ustc.edu.cn/ubuntu-ports bionic-security main restricted universe multiverse# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main restricted universe multiverse# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-proposed main restricted universe multiverse# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.aliyun.com/ubuntu-ports/ bionic main restricted universe multiverse
# deb-src https://mirrors.aliyun.com/ubuntu-ports/ bionic main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu-ports/ bionic-updates main restricted universe multiverse
# deb-src https://mirrors.aliyun.com/ubuntu-ports/ bionic-updates main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu-ports/ bionic-backports main restricted universe multiverse
# deb-src https://mirrors.aliyun.com/ubuntu-ports/s bionic-backports main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu-ports/ bionic-security main restricted universe multiverse
# deb-src https://mirrors.aliyun.com/ubuntu-ports/ bionic-security main restricted universe multiverse# 预发布软件源,不建议启用
# deb https://mirrors.aliyun.com/ubuntu-ports/ bionic-proposed main restricted universe multiverse
# deb-src https://mirrors.aliyun.com/ubuntu-ports/ bionic-proposed main restricted universe multiversedeb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-security main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-updates main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-backports main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-security main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-updates main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-backports main multiverse restricted universe

4.3. 编译安装

这里,我们把~/Downloads/中已经解压的ffmpeg-4.3文件夹移入到/opt/路径下

cd ~/Downloads
sudo mv -f ffmpeg-4.3 /opt/

然后进入ffmpeg-4.3,编译

cd /opt/ffmpeg-4.3
sudo ./configure --enable-shared --enable-libx264 --enable-gpl --enable-libx265 --prefix=/usr/local/ffmpeg
sudo make && sudo make install

然后配置全局环境变量

sudo vim /etc/profile

在最后加入

export FFMPEG_HOME=/usr/local/ffmpeg
export PATH=$FFMPEG_HOME/bin:$PATH

保存,退出,并输入

source /etc/profile

将ffmpeg添加进动态库目录,如下

sudo vim /etc/ld.so.conf.d/ffmpeg.conf

添加如下内容

/usr/local/ffmpeg/lib

配置生效

ldconfig

4.4. 测试ffmpeg

ffmpeg -version

输出如下内容即可
在这里插入图片描述


5. 编译安装opencv 4.1.1

参考博客《jetson nano和jetson nx 重装opencv(opencv4.1.1+opencv-contrib安装)》


推荐阅读
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Vagrant虚拟化工具的安装和使用教程
    本文介绍了Vagrant虚拟化工具的安装和使用教程。首先介绍了安装virtualBox和Vagrant的步骤。然后详细说明了Vagrant的安装和使用方法,包括如何检查安装是否成功。最后介绍了下载虚拟机镜像的步骤,以及Vagrant镜像网站的相关信息。 ... [详细]
  • 本文介绍了Python对Excel文件的读取方法,包括模块的安装和使用。通过安装xlrd、xlwt、xlutils、pyExcelerator等模块,可以实现对Excel文件的读取和处理。具体的读取方法包括打开excel文件、抓取所有sheet的名称、定位到指定的表单等。本文提供了两种定位表单的方式,并给出了相应的代码示例。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • 怎么在PHP项目中实现一个HTTP断点续传功能发布时间:2021-01-1916:26:06来源:亿速云阅读:96作者:Le ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 本文详细介绍了git常用命令及其操作方法,包括查看、添加、提交、删除、找回等操作,以及如何重置修改文件、抛弃工作区修改、将工作文件提交到本地暂存区、从版本库中删除文件等。同时还介绍了如何从暂存区恢复到工作文件、恢复最近一次提交过的状态,以及如何合并多个操作等。 ... [详细]
  • 本文介绍了在Ubuntu下制作deb安装包及离线安装包的方法,通过备份/var/cache/apt/archives文件夹中的安装包,并建立包列表及依赖信息文件,添加本地源,更新源列表,可以在没有网络的情况下更新系统。同时提供了命令示例和资源下载链接。 ... [详细]
author-avatar
赵丶宇森
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有