opencv470 ffmpeg java springboot centos 调用集成


前言

最近在做opencv相关的东西 用java调用opencv库+ffmpeg去做视频的一些处理 记录一下:

windows 集成因为可以直接下载一些库 就比较简单了 以下会粗略的介绍一下。
重点还是放到 linux下集成 因为很多东西都需要自己编译 很麻烦 很繁琐!!!
对于第一次做这个的我简直是陌生要死 欲哭无泪~~~


提示:以下是本篇文章正文内容,下面案例可供参考

一、介绍一下Windows下针对以上的集成方法

1. 首先去opencv官网下载

下载
下载后
下载

解压到本地 然后在 上面目录下 找到dll动态链接库文件 copy到你本地的 jdk bin下面

2. 去ffmpeg官网下载windows的安装包

下载
解压到本地
然后再环境变量中配置 ffmpeg
示例
到此基本结束。

3. java maven集成

maven仓库 中找 关于opencv的依赖包

这里面我就遇到了一个问题就是在java使用的时候 会报错

Could not initialize class org.bytedeco.ffmpeg.global.avutil

这个问题我卡了很久 最后发现其实就是ffmpeg包没有正确加载
错误的pom

<!-- https://mvnrepository.com/artifact/org.bytedeco/javacpp -->
        <dependency>
            <groupId>org.bytedeco</groupId>
            <artifactId>javacpp</artifactId>
            <version>1.5.9</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.bytedeco/opencv -->
        <dependency>
            <groupId>org.bytedeco</groupId>
            <artifactId>opencv</artifactId>
            <version>4.7.0-1.5.9</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.bytedeco/ffmpeg-platform -->
        <dependency>
            <groupId>org.bytedeco</groupId>
            <artifactId>ffmpeg</artifactId>
            <version>6.0-1.5.9</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.bytedeco/javacv -->
        <dependency>
            <groupId>org.bytedeco</groupId>
            <artifactId>javacv</artifactId>
            <version>1.5.9</version>
        </dependency>

正确的POM

<!-- https://mvnrepository.com/artifact/org.bytedeco/javacpp -->
        <dependency>
            <groupId>org.bytedeco</groupId>
            <artifactId>javacpp</artifactId>
            <version>1.5.9</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.bytedeco/opencv -->
        <dependency>
            <groupId>org.bytedeco</groupId>
            <artifactId>opencv</artifactId>
            <version>4.7.0-1.5.9</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.bytedeco/ffmpeg-platform -->
        <dependency>
            <groupId>org.bytedeco</groupId>
            <artifactId>ffmpeg-platform</artifactId>
            <version>6.0-1.5.9</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.bytedeco/javacv -->
        <dependency>
            <groupId>org.bytedeco</groupId>
            <artifactId>javacv</artifactId>
            <version>1.5.9</version>
        </dependency>

其实就是ffmpeg包的问题 改成ffmpeg-platform就可以了
可能-platform 确定一下平台的意思吧 不太知道
然后基本上就可以进行本地开发了!!!

二、linux上部署环境

1.编译环境检查

1.1 检查gcc版本

因为你版本过低 编译opencv是过不去的 我用的是 470 可能需要高版本的环境
在这里 我用的版本是gcc-11.2.0

如果需要升级 请看我这一篇
centos升级gcc-11.2.0

1.2 第二步 检查cmake版本

因为编译环境需要高版本cmake 所以 应该升级为3.5以上版本 不然编译的时候会报错

cmake --version 查看原来的cmake版本

如果版本低就需要升级 如果很高就不用

升级方法

1.删除旧的cmake

yum remove cmake

期间会询问你是否确认删除,输入y
2.安装编译源码所需要的工具包,gcc, g++,perl。

yum install gcc gcc-c++ ncurses-devel perl

3.下载cmake源码包
地址:https://cmake.org/files/v3.5/
或者用命令下载

wget https://cmake.org/files/v3.5/cmake-3.5.1.tar.gz

你要是想下载更高的 可以选择更高的
4.把文件拷贝到/usr/local目录下

cp cmake-3.5.1.tar.gz /usr/local/ 

5.解压到当前目录

tar zxvf cmake-3.5.1.tar.gz

6.改名为cmake 这步很关键

mv cmake-3.5.1 cmake

7.依次执行如下命令,进行编译,安装

cd cmake

./configure

make

make install

8.打开系统文件中增加变量

vi /etc/profile 
PATH=/usr/local/cmake/bin:$PATH
export PATH

9.保存文件后,执行source /etc/profile 以刷新生效
再执行 echo $PATH 可以看到bin路径已经生效
10查看cmake版本

 cmake --version 

2. 安装必要组件

按需安装 不需要可以不安装

2.1 安装ant

sudo apt-get install ant 

2.2 安装libmp3lame

因为用到了涉及音频相关的操作 所以需要安装一下这个 不需要可以忽略

tar -zxf lame-3.100.tar.gz
cd lame-3.100
./configure
make
make install

2.3 安装yasm

tar -zxf yasm-1.3.0.tar.gz
cd yasm-1.3.0
sed -i 's#) ytasm.*#)#' Makefile.in
./configure
make
make install

2.4 安装libx64

git clone https://code.videolan.org/videolan/x264.git
cd x264

编译

./configure --prefix=/usr/x264/ --includedir=/usr/local/include --libdir=/usr/local/lib --enable-shared
make 
make install

配置环境变量

vim ~/.bashrc
 
在最后PATH添加环境变量:
 
export PATH="/usr/local/nasm/bin:$PATH"
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
export PATH="/usr/x264/bin:$PATH"
 
保存退出
 
source ~/.bashrc  设置生效

验证

x264 --version

2.5 源码安装nasm

下载和解压:

wget https://www.nasm.us/pub/nasm/releasebuilds/2.14/nasm-2.14.tar.gz
tar -zxvf nasm-2.14.tar.gz
cd nasm-2.14

nasm安装:

./configure
make
sudo make install

添加到环境变量:

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

安装成功校验:

nasm -v
NASM version 2.14 compiled on Jul  9 2024

3. 安装ffmpeg

3.1 源码安装 ffmpeg

下载和解压:

wget https://ffmpeg.org//releases/ffmpeg-6.1.1.tar.gz
tar -zxvf ffmpeg-6.1.1.tar.gz
cd ffmpeg-6.1.1

编译和安装:

./configure --enable-gpl --enable-libx264 --enable-shared  --enable-libmp3lame  --extra-ldflags=-L/usr/local/lib --extra-cflags=-I/usr/local/include
make
sudo make install

配置环境变量:

vi /etc/profile
     export PATH=$PATH:/usr/local/ffmpeg/bin
:wq 保存退出
 
刷新资源,使其生效
source /etc/profile

到此 ffmpeg的安装结束 包含了 libx64 音频解码 libmp3lame的编译和安装 不需要可不安装

4. 安装opencv 编译java所需要的so库

下载opencv470 linux版本

地址:https://opencv.org/releases/ 官网地址
如图
下载后新建一个文件夹 然后解压到/opt/opencv-4.7.0下
进入/opt/opencv-4.7.0
新建build文件夹
然后执行

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv -D BUILD_SHARED_LIBS=ON -D WITH_FFMPEG=ON -D BUILD_opencv_java=ON ..

注意 -D WITH_FFMPEG=ON 需要加上 如果不加的话 在调用

VideoCapture capture = new VideoCapture(inputVideoPath);

会一直报错找不到这个文件无法打开 很头疼

-D BUILD_opencv_java=ON

的意思是编译出来java可以用的环境 但是在此之前一定要保证你的jdk环境已经配置生效 这个就不多说了
确保

java -version

示例
是这个样子的
然后 执行

make -j8 
sudo make install 

最后生成的so库文件在
/usr/local/opencv/share/java/opencv4里面
在这里插入图片描述
到现在就成功的生成了so库文件!!!

总结

以上方法经历了好几天的摸索与尝试 按需取吧 也参考了很多的帖子。
融合了一下。如果解决了你的问题 记得点赞收藏~~~

  • 25
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值