作者:赵丶宇森 | 来源:互联网 | 2023-07-05 19:55
目录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 ffmpegsudo apt-get --purge autoremove
3.2. 卸载编译安装的ffmpeg 以ffmpeg-4.1为例,进入ffmpeg安装目录,如下
cd ffmpeg-4.1make uninstall make clean make distclean
4. 编译安装ffmpeg 4.3 参考博客《Jetson 环境安装(三):jetson nano配置ffmpeg和nginx(亲测)》
4.1. 下载安装包 这里,我把安装包下载在~/Downloads/
路径下,并解压
wget http://www.ffmpeg.org/releases/ffmpeg-4.3.tar.gztar -zxvf ffmpeg-4.3.tar.gz
4.2. 安装依赖 如下
sudo apt-get install -y nasm yasm cmake mercurialsudo apt-get install -y libxcb-xfixes0-dev pkg-config texinfo wget zlib1g-devsudo apt-get install -y libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-devsudo apt-get install -y libfreetype6-dev libsdl2-dev libtheora-devsudo apt-get install -y autoconf automake build-essential git libass-devsudo apt-get install libx264-devsudo apt-get install libx265-dev libnuma-devsudo apt-get install libvpx-dev
注意,如果安装报错,考虑更换源,我的源如下
deb 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 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 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 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 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 https://mirrors.aliyun.com/ubuntu-ports/ bionic-backports main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu-ports/ bionic-security main restricted universe multiverse deb 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 ~/Downloadssudo mv -f ffmpeg-4.3 /opt/
然后进入ffmpeg-4.3,编译
cd /opt/ffmpeg-4.3sudo ./configure --enable-shared --enable-libx264 --enable-gpl --enable-libx265 --prefix= /usr/local/ffmpegsudo make && sudo make install
然后配置全局环境变量
sudo vim /etc/profile
在最后加入
export FFMPEG_HOME = /usr/local/ffmpegexport 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安装)》