Ubuntu22.04源码安装ffmpeg
1.下载ffmpeg的源码包
wget https://ffmpeg.org/releases/ffmpeg-7.0.1.tar.xz
解压:
tar -xvf ffmpeg-7.0.1.tar.xz
2.安装基本编译构建工具
sudo apt-get install gcc g++ cmake make pkgconf -y
3.编译ffmpeg
进入解压后的ffmpeg源码目录,目录中有一个名为configure
的shell脚本,通过该shell脚本可以配置ffmpeg的安装位置以及需要安装的ffmpeg组件,这里选择将ffmpeg安装到~/util/ffmpeg/
,使用的命令如下:
mkdir -p ~/util/ffmpeg/lib
./configure --prefix="/home/cat/util/ffmpeg" --enable-gpl --enable-nonfree --enable-ffplay --enable-libfdk-aac --enable-libmp3lame --enable-libx264 --enable-libx265 --enable-filter=delogo --enable-debug --disable-optimizations --enable-libspeex --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --extra-cflags=-I/home/cat/util/ffmpeg/include --extra-ldflags=-L/home/cat/util/ffmpeg/lib
在安装时可能显示缺失某些依赖包:
nasm/yasm not found or too old. Use --disable-x86asm for a crippled build.
解决方案:下载yasm源码并解压,编译yasm源码
wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar -zxvf yasm-1.3.0.tar.gz
cd yasm-1.3.0
./configure --prefix=/home/cat/util/ffmpeg/
make -j16
sudo make install
export PATH=$PATH:/home/cat/util/ffmpeg/bin
ERROR: libfdk_aac not found
解决方案:下载fdk_aac源码并编译
wget https://zenlayer.dl.sourceforge.net/project/opencore-amr/fdk-aac/fdk-aac-2.0.3.tar.gz
tar -zxvf fdk-aac-2.0.3.tar.gz
cd fdk-aac-2.0.3/
./configure --prefix=/home/cat/util/ffmpeg/
make -j16
sudo make install
export PKG_CONFIG_PATH=/home/cat/util/ffmpeg/lib/pkgconfig/
某些情况下可能已经编译好了ffmpeg的依赖包,但是编译ffmpeg时依然找不到对应的包,此时可以尝试执行rm -f ffbuild/config.log
命令并重新构建ffmpeg
ERROR: libmp3lame >= 3.98.3 not found
解决方案:下载对应的源码包并编译
wget https://zenlayer.dl.sourceforge.net/project/lame/lame/3.100/lame-3.100.tar.gz
tar -zxvf lame-3.100.tar.gz
cd lame-3.100/
./configure --enable-shared --prefix=/home/cat/util/ffmpeg/
make -j16
sudo make install
ERROR: speex not found using pkg-config
wget https://ftp.osuosl.org/pub/xiph/releases/speex/speex-1.2.1.tar.gz
tar -zxvf speex-1.2.1.tar.gz
cd speex-1.2.1/
./configure --prefix=/home/cat/util/ffmpeg/
make -j16
sudo make install
ERROR: x264 not found using pkg-config
wget https://code.videolan.org/videolan/x264/-/archive/master/x264-master.tar.bz2
tar -jxvf x264-master.tar.bz2
cd x264-master/
./configure --prefix=/home/cat/util/ffmpeg/ --disable-asm --enable-static --enable-shared
make -j16
sudo make install
ERROR: x265 not found using pkg-config
wget http://ftp.videolan.org/pub/videolan/x265/x265_3.2.tar.gz
tar -zxvf x265_3.2.tar.gz
cd x265_3.2/build/linux
./make-Makefiles.bash
make -j16
sudo make install
4.安装ffmpeg
执行ffmpeg的安装脚本,如果输出如下,表示依赖安装完成,可以编译并安装ffmpeg
install prefix /home/cat/util/ffmpeg
source path .
C compiler gcc
C library glibc
ARCH x86 (generic)
big-endian no
runtime cpu detection yes
standalone assembly yes
x86 assembler yasm
MMX enabled yes
MMXEXT enabled yes
3DNow! enabled yes
3DNow! extended enabled yes
SSE enabled yes
SSSE3 enabled yes
......
在编译并安装ffmpeg之前,先下载并编译SDL源码,因为ffplay依赖于SDL
wget https://github.com/libsdl-org/SDL/archive/refs/tags/release-2.30.5.tar.gz
tar -zxvf release-2.30.5.tar.gz
cd SDL-release-2.30.5
./configure --prefix=/home/cat/util/ffmpeg/
make -j16
sudo make install
进入ffmpeg源码目录
make -j16
sudo make install
5.将ffmpeg程序目录添加到PATH
sudo vim /etc/profile
,在profile文件末尾添加export PATH="/home/cat/util/ffmpeg/bin/:$PATH"
,将/home/cat/util/ffmpeg/bin/替换为ffmpeg的安装目录
sudo vim /etc/ld.so.conf
,在ld.so.conf文件末尾添加库文件路径/home/cat/util/ffmpeg/lib
,执行ldconfig
命令