Ubuntu ffmpeg编译
博主在编译ffmpeg中,踩了好多坑,要么少库,要么有冲突。
根据自身经历,基于Ubuntu整理了一版ffmpeg编译方法,用于x264 x265解码。
在这一过程中,也发现了aptitude
这一包管理器的强大之处,能解决库与系统版本之间的冲突,进而安装想要的库。
本文主要参考以下文章,里面有更详细介绍。本文主要介绍编译流程,照着编译基本都可实现
Ubuntu20.04 编译安装 FFmpeg 详细教程
ubuntu ffmpeg6.0开发环境搭建
ffmpeg环境编译
-
ffmpeg源码
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg\
-
安装包 apt包管理
sudo apt update;sudo apt -y install autoconf automake build-essential cmake git-core libass-dev libfreetype6-dev libsdl2-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev pkg-config texinfo wget zlib1g-dev;sudo apt install libgmp3-dev;sudo apt install pkg-config;sudo apt install gnutls-bin;
-
安装 aptitude包管理
sudo apt install aptitude;sudo aptitude install yasm nasm;sudo aptitude install libaom-dev;sudo aptitude install libass-dev;sudo aptitude install libbluray-dev;sudo aptitude install libfdk-aac-dev;sudo aptitude install libmp3lame-dev;sudo aptitude install libopencore-amrnb-dev;sudo aptitude install libopencore-amrwb-dev;sudo aptitude install libopenmpt-dev;sudo aptitude install libopus-dev;sudo aptitude install libshine-dev;sudo aptitude install libsnappy-dev;sudo aptitude install libsoxr-dev;sudo aptitude install libspeex-dev;sudo aptitude install libtheora-dev;sudo aptitude install libtwolame-dev;sudo aptitude install libvo-amrwbenc-dev;sudo aptitude install llibvpx-dev;sudo aptitude install libwavpack-dev;sudo aptitude install libwebp-dev;sudo aptitude install libx264-dev;sudo aptitude install libx265-dev;sudo aptitude install libxvidcore-dev;sudo aptitude install liblzma-dev;
-
x264编译
先进入ffmpeg所在路径
sudo git clone --depth 1 https://github.com/mirror/x264.git ;cd x264 ;sudo ./configure --prefix="$HOME/FFmpeg_build" --bindir="$HOME/bin" --enable-static --enable-shared --enable-pic --disable-opencl ;sudo make -j32 ;sudo make install -j32;
-
x265编译
先进入ffmpeg所在路径
git clone https://gitee.com/mirrors_videolan/x265.git x265;cd x265/build/linux ;sudo cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/FFmpeg_build" -DENABLE_SHARED=on -DENABLE_PIC=on -DBIN_INSTALL_DIR="$HOME/bin" ../../source ;sudo make -j32;sudo make install -j32;
-
ffmpeg动态/静态库编译
sudo ./configure --prefix="$HOME/FFmpeg" --extra-libs="-lpthread -lm" --bindir="$HOME/bin" --pkg-config-flags="--static" --extra-cflags="-I$HOME/FFmpeg/include" --extra-ldflags="-L$HOME/FFmpeg/lib" --enable-gpl --enable-shared --enable-static --enable-nonfree --enable-libx264 --enable-libx265 –enable-sdl; sudo make -j16;sudo make install -j16
产物路径:$HOME/bin
编译库路径:$HOME/FFmpeg
ffmpeg4-4-4
sudo ./configure --prefix="/usr" --extra-libs="-lpthread -lm" --bindir="$HOME/ffmpeg_bin4-4-4" --pkg-config-flags="--static" --extra-cflags="-I$HOME/FFmpeg/include" --extra-ldflags="-L$HOME/FFmpeg/lib" --enable-gpl --enable-shared --enable-static --enable-nonfree --enable-libx264 --enable-libx265; sudo make -j16;sudo make install -j16
-
设置环境变量
-
PATH
sudo vi /etc/profile
结尾添加export PATH="$HOME/FFmpeg/bin:$PATH"
-
链接路径
sudo vi /etc/ld.so.conf
结尾添加,然后执行ldconfig -v
$HOME/FFmpeg/lib/
-
-
项目cmake
需要修改根目录
CMakeLists.txt
中set(FFMEPG_BUILD_PATH /home/ssc/FFmpeg)
,FFMEPG_BUILD_PATH
指向实际编译路径
FAQ
-
libglu1-mesa-dev : 依赖: libgl1-mesa-dev 但是它将不会被安装 或
libgl-dev
mesa-common-dev : 依赖: libdrm-dev (>= 2.4.65) 但是它将不会被安装
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。sudo aptitude install libgl1-mesa-dev 第一步选择 n 后面选择Y 回退库到支持版本
-
ffmpeg: error while loading shared libraries: libavdevice.so.58: cannot open shared object file: No such file or directory
环境变量 动态库 没有配置