Ubuntu编译安装FFmpeg+libx264以及编译+安装Opencv+FFmpeg保姆教程
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:Ubuntu编译安装FFmpeg+libx264以及编译+安装Opencv+FFmpeg保姆教程
原文链接:https://www.stubbornhuang.com/2058/
发布于:2022年03月24日 14:09:10
修改于:2022年04月18日 14:15:54

1 编译安装FFmpeg+libx264
1.1 安装yasm或者nasm
libx264需要yasm或者nasm进行编译,所以需要安装yasm或者nasm的对应版本,一般是nasm 2.13。
安装yasm
sudo apt-get install yasm
安装nasm
sudo apt-get install nasm
1.2 安装pkg-config
如果未安装pkg-config时,在使用ffmpeg的编译文件./configure
编译ffmpge时会出现
WARNING: pkg-config not found, library detection may fail.
WARNING: using libx264 without pkg-config
警告,这个时候需要使用
sudo apt install pkg-config
安装pkg-config,重新编译ffmpeg即可消除这个警告。
至于pkg-config的作用就是为了返回已安装库的头文件,库文件等信息,方便其他库依赖当前库时可以很快的找到这个库。比如后续在OpenCV中使用读取视频cv::VideoCapture
就需要依赖ffmpeg的库,而OpenCV的库寻找就是通过pkg-config的方式寻找ffmpeg库。
具体的pkg-config的作用可参考:
- https://www.cnblogs.com/sddai/p/10266624.html
- https://blog.csdn.net/DeliaPu/article/details/102843395
1.3 编译安装libx264
使用以下命令编译安装libx264
git clone http://git.videolan.org/git/x264.git
cd x264/
./configure --enable-shared
make
sudo make install
1.4 ffmpeg编译安装
1.4.1 下载ffmpeg
在官网下载ffmpge,下载地址为:http://ffmpeg.org/download.html#releases
从这个链接获取更老的版本:http://ffmpeg.org/olddownload.html
往下拉,找到自己需要的ffmpeg版本,这里以ffmpge4.4.1版本为例

如果是命令行直接使用
wget http://ffmpeg.org/releases/ffmpeg-4.4.1.tar.xz
下载到本地。
或者可以从这个网站获取ffmpeg所有版本的下载链接:https://www.johnvansickle.com/ffmpeg/old-releases/

1.4.2 解压缩
xz -d ffmpeg-4.4-arm64-static.tar.xz
tar xvf ffmpeg-4.4-arm64-static.tar
1.4.3 编译安装
ffmpeg的编译工具./configure
的详细参数请参考:https://www.stubbornhuang.com/2053/
在解压缩的目录下使用以下命令编译ffmpeg
./configure --prefix=/usr/local/ffmpeg --enable-shared --disable-static --disable-doc --enable-libx264 --enable-gpl --pkgconfigdir=/usr/share/pkgconfig
make
sudo make install
根据编译工具./configure
的详细参数,以上命令的意义为设置ffmpeg的安装路径为/usr/local/ffmpeg,构建ffmpge动态库,不够减ffmpeg静态库,不构建ffmpeg文档,启用x264编解码。另外这里设置了参数--pkgconfigdir
,在安装的时候将ffmpeg的pkgconfig的相关文件拷贝到路径/usr/share/pkgconfig,设置这个参数的目的主要是为了在后续编译OpenCV+ffmpeg的时候可以找到ffmpge库的相关信息。这里可参考:https://www.cnblogs.com/haiyang21/p/11029303.html
1.4.4 配置ffmpeg环境变量
配置ffmpeg动态库路径
sudo nano /etc/ld.so.conf.d/ffmpeg.conf
在ffmpeg.conf文件中添加一行:/usr/local/ffmpeg/lib
# 生效
sudo ldconfig
配置ffmpeg系统环境变量
sudo nano /etc/profile
# 在该文件中增加一行:
export PATH=$PATH:/usr/local/ffmpeg/bin
# 生效
source /etc/profile
拷贝ffmpge pkgconfig文件到系统的目录下
sudo cp /usr/local/ffmpeg/lib/pkgconfig/* /usr/share/pkgconfig
或者
sudo cp /usr/local/ffmpeg/lib/pkgconfig/* /usr/lib
都可以。
1.4.5 测试ffmpeg是否安装成功
使用
ffmpge --version
如果可以正确打印出信息,则说明ffmpeg安装成功。
2 编译安装Opencv+FFmpeg
2.1 下载OpenCV
官网下载地址:https://opencv.org/releases/
这里以OpenCV3.4.10为例

如果是命令行则使用
wget https://github.com/opencv/opencv/archive/3.4.10.zip
将源码下载到本地。
2.2 编译OpenCV
2.2.1 解压缩
unzip ./3.4.10.zip
2.2.2 编译OpenCV
解压缩完成之后,使用以下命令
mkdir bin
cd bin
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_FFMPEG=ON -D BUILD_EXAMPLES=OFF -D BUILD_TESTS=OFF ..
make
sudo make install
在解压缩文件夹下创建文件夹bin,进入新建的bin文件夹下,使用cmake命令编译。上述的cmake命令设置编译模式为Release,设置OpenCV的安装路径为/usr/loacl,设置启用ffmpeg混编,设置不编译example,设置不编译test。
安装完成之后的include的路径为:
/usr/local/include
lib路径为:
/usr/local/lib
2.2.3 OpenCV编译时找不到ffmpeg
如果前面ffmpeg没有安装成功、动态库没配置、环境变量没配置、以及pkgconfig拷贝到指定的系统目录,在进行opencv+ffmpge混编时,使用cmake生成makefiles文件时会出现如下ffmpeg库没有被找到的问题
-- Video I/O:
-- DC1394: NO
-- FFMPEG: NO
-- avcodec: NO
-- avformat: NO
-- avutil: NO
-- swscale: NO
-- avresample: NO
-- GStreamer: NO
-- libv4l/libv4l2: NO
-- v4l/v4l2: linux/videodev2.h
那么这个时候需要着重检查是否正确的将ffmpge的pkgconfig文件正确的拷贝到了/usr/share/pkgconfig目录下,因为OpenCV是使用pkg-lib 去check 的,需要将ffmpeg的一些pc文件复制一份到 /usr/share/pkgconfig,假设ffmpge的安装路径为/usr/local/ffmpge,则使用以下命令进行拷贝:
sudo cp /usr/local/ffmpeg/lib/pkgconfig/* /usr/share/pkgconfig
然后仔细检查ffmpeg的环境变量是否设置正确,以及动态库路径是否设置正确。设置完成之后,重新cmake即可,如果看到
-- Video I/O:
-- DC1394: NO
-- FFMPEG: Yes
-- avcodec: Yes
-- avformat: Yes
-- avutil: Yes
-- swscale: Yes
-- avresample: Yes
-- GStreamer: NO
-- libv4l/libv4l2: NO
-- v4l/v4l2: linux/videodev2.h
则说明成功找到了ffmpeg,即可使用make进行编译。
2.2.4 配置opencv环境变量
配置opencv动态库路径
sudo nano /etc/ld.so.conf.d/opencv.conf
在opencv.conf文件中添加一行:/usr/local/opencv3/lib64/
# 生效
sudo ldconfig -v
拷贝opencv pkgconfig文件到系统的目录下
sudo cp /usr/local/opencv3/lib64/pkgconfig/opencv.pc /usr/share/pkgconfig/
2.2.5 测试opencv是否安装成功
pkg-config --modversion opencv
参考链接
当前分类随机文章推荐
- FFmpeg - 关于ffmpeg avcodec_open2函数失败的问题 阅读3245次,点赞0次
- FFmpeg - RGB图像编码为h264出现垂直旋转的问题 阅读3344次,点赞0次
- FFmpge - Ubuntu编译FFmpeg出现WARNING: pkg-config not found, library detection may fail警告 阅读3593次,点赞0次
- Python - 使用ffmepg批量转换某个文件夹以及所有子文件夹下所有的视频,修改其帧率/码率/分辨率到另一文件夹,并保留原有文件夹结构 阅读2642次,点赞0次
- Python - 使用命令行调用ffmpeg修改视频帧率,将60FPS的视频修改为30FPS的视频,视频时间保持不变 阅读292次,点赞0次
- FFmpeg - 通过h264编码的视频文件开始很清晰后面逐渐模糊 阅读3579次,点赞2次
- FFmpeg - PTS、DTS、时间基、时间戳详解 阅读312次,点赞0次
- FFmpeg - 将某个文件夹下的图片按标号顺序合成为指定编码格式和指定帧率的视频 阅读4119次,点赞0次
- FFmpeg - 自定义http请求参数,如user-agent,headers,referer等 阅读528次,点赞0次
- FFmpeg - 命令行参数与常用命令行 阅读225次,点赞1次
全站随机文章推荐
- 资源分享 - Game Programming Gems 4 英文高清PDF下载 阅读2149次,点赞1次
- 资源分享 - Non-Photorealistic Rendering 英文高清PDF下载 阅读1462次,点赞0次
- Duilib - 颜色属性的设置 阅读3173次,点赞1次
- FFmpeg - FFmpeg历史版本下载和函数弃用列表 阅读1682次,点赞0次
- Python3爬虫 - 下载反盗链图片的方式 阅读2708次,点赞1次
- 姿态估计之human3.6m数据集骨骼关节keypoint标注对应 阅读9179次,点赞9次
- Python:UnicodeEncodeError: 'gbk' codec can't encode character '\xbb' in position 12305,以及中文乱码的解决方案 阅读2980次,点赞0次
- 资源分享 - Artificial Intelligence for Games , Second Edition 英文高清PDF下载 阅读1174次,点赞0次
- 深度学习 - 卷积神经网络CNN简介 阅读418次,点赞0次
- 资源分享 - Robust and Error-Free Geometric Computing 英文高清PDF下载 阅读2172次,点赞0次
评论
167