1.源码下载
(1)下载ffmpeg4.2.2、opencv4.8.0源码,这里提供一个百度网盘地址:
链接:https://pan.baidu.com/s/1pBksr0_RtKL0cM6Gsf2MGA?pwd=cyai
提取码:cyai
(2)解压所有文件
例如解压到cytech_ai/env/opencv_build文件夹下:
unzip opencv-4.8.0.zip
unzip opencv_contrib-4.8.0.zip
tar -xf ffmpeg_4.2.2.orig.tar
目录如下:
2.ffmpeg编译
进入ffmpeg-4.2.2文件夹下,并输入一下命令:
cd /cytech_ai/env/opencv_build/ffmpeg-4.2.2
./configure --enable-shared --enable-avresample --disable-x86asm --prefix=/usr/local/ffmpeg
使用make进行编译:
make -j32
make install
编译完成后,编译后的文件保存在:/usr/local/ffmpeg目录下,并将bin和lib目录添加到对应的文件中。
vim /etc/ld.so.conf
在文件中添加ffmpeg的lib文件夹
终端执行:
ldconfig
编辑环境变量:
vim /etc/profile
#在文件末尾追加一行:
export PATH=/usr/local/ffmpeg/bin:$PATH
#执行保存
source /etc/profile
在终端输入:
ffmpeg -version
表示安装成功,并打印版本信息
3.编译opencv
(1)在opencv-4.8.0文件夹下新建一个build文件夹,并执行cmake命令:
cd /cytech_ai/env/opencv_build/opencv-4.8.0
mkdir build && cd build
执行完成后,填写cmake命令:
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/cytech_ai/env/opencv480gpu -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.8.0/modules -DWITH_GTK=OFF -DWITH_CUDA=ON -DWITH_CUDNN=ON -DWITH_TBB=ON -DOPENCV_DNN_CUDA=ON -DENABLE_FAST_MATH=1 -DCUDA_FAST_MATH=1 -DWITH_CUBLAS=1 -DOPENCV_ENABLE_NONFREE=ON -DBUILD_CUDA_STUBS=ON -DBUILD_opencv_world=ON -DWITH_FFMPEG=ON ..
-DCMAKE_INSTALL_PREFIX:表示编译后make install的位置
-DOPENCV_EXTRA_MODULES_PATH:表示cuda相关的第三方文件
-DBUILD_opencv_world=ON:表示最终只编译得到一个opencv_world.so文件,方便后续链接和移动库,建议编成一个。
-DWITH_FFMPEG:表示打开ffmpeg,便于后续使用rtsp和读取视频文件videocapture使用。
其他的一些cuda,cudnn和加速的算子都打开就行。
当显示:
ffmpeg为YES时,表示找到了前面编译的ffmpeg,直接make即可:
make -j32 && make install
编译时间较长,等待编译完成即可在/cytech_ai/env/opencv480gpu文件夹下找到编译后的库
make 过程:
make install过程:
编译完成:
4.常见问题:
(1)ubuntu下编译带opencv ffmpeg显示NO
编译的时候,系统一直找不到ffmpeg,一直显示为NO,主要原因是编译的位置没有添加环境变量,最好就编译在usr/local下,目前是测过的了,其他位置确实会出现找不到的情况:
vim /etc/profile
在文件末尾添加:
export PATH=/usr/local/ffmpeg/bin:$PATH
:wq保存退出,并执行修改后的环境变量:
source /etc/profile
(2)ffmpeg文件夹下执行configure失败,报错nasm/yasm not found
报错详细信息:
nasm/yasm not found or too old. Use --disable-x86asm for a crippled build.If you think configure made a mistake, make sure you are using the latest
version from Git. If the latest version fails, report the problem to the
ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.freenode.net.
Include the log file "ffbuild/config.log" produced by configure as this will help
solve the problem.
在命令中添加–disable-x86asm 取消优化即可,也可以apt install nasm,再使用该命令
./configure --enable-shared --enable-avresample --prefix=/usr/
#改为
./configure --enable-shared --enable-avresample --disable-x86asm --prefix=/usr/local/ffmpeg
(3)ubuntu下apt install 安装文件显示无法定位软件包:
直接运行下面的代码,再次尝试即可:
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
(4)不编译cuda,直接编译cpu版本的
去掉需要使用cuda的命令:
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_INSTALL_PREFIX=/cytech_ai/env/opencv480cpu/ -DOPENCV_ENABLE_NONFREE=ON -DBUILD_OPENCV_WORLD=ON -DWITH_FFMPEG=ON ..
5.参考
1.https://blog.csdn.net/jiexijihe945/article/details/125070402
2.https://blog.csdn.net/Damon_Sandy/article/details/131995799
3.https://blog.csdn.net/weixin_48896613/article/details/124415754
4.https://launchpad.net/ubuntu/+source/ffmpeg