FFmpeg 是一个被广泛使用的开源音视频处理库,几乎所有流行的音视频编辑工具、播放器中都有它的身影.
在windows上安装它非常简单,下载压缩包,解压后得到3个exe即可使用了。
但在Linux系统上,除非直接使用系统源,例如yum apt
等方式安装,否则直接源码编译安装还是挺费劲的,可惜系统源自带的ffmpeg一般都非常古老,现在最新ffmepg已到7.x版本,而CentOS源仍是 2.x/3.x的远古版。
即便网络上并且借助ai更新了一些三方源,但最新仍只到4.x,网络上也鲜少CentOS7系上源码编译最新ffmpeg的可用方法。经过一番折腾,总算在CentOS7上成功安装了最新版的ffmpeg,整理下记录下。
0. 先更新 yum 源
分别执行以下命令
yum clean all
yum -y update
更新后,再安装一堆依赖
yum install -y autoconf automake bzip2 bzip2-devel cmake freetype-devel gcc gcc-c++ git libtool make pkgconfig zlib-devel libass-devel lame-devel opus-devel
如果遇到提示输入 [y/n/a]
时输入 y
回车.
为什么要执行
yum update
呢,不执行可不可以?当然可以,但更新是更好的选择,不仅可以更新软件包列表,更重要的是可能会解决一些潜在的依赖问题。yum update 命令会自动解决软件包的依赖关系,并安装所有必要的依赖包。如果系统中缺少一些依赖包,yum install 命令可能会失败。
1. 创建一个空目录
源码编译要先提前先编译一堆编解码库,互相之间都有依赖关系,位置很重要,为避免出错,在家目录下创建一个ffmpeg_source
目录,所有操作前需先执行 cd ~/ffmpeg_source
先进入该目录中,忘记这步操作会出现很多报错,类似pkg_config
等,如果复制该报错信息去搜索,只会导致错上加错,这里踩过大坑。
mkdir ~/ffmpeg_source && cd ~/ffmpeg_source
之后的所有操作都在 ~/ffmpeg_source
目录中
2. 安装 NASM
这是一个汇编器,缺少它可能影响编译速度
执行以下命令安装
cd ~/ffmpeg_source curl -O -L https://www.nasm.us/pub/nasm/releasebuilds/2.15.05/nasm-2.15.05.tar.bz2 tar xjvf nasm-2.15.05.tar.bz2 cd nasm-2.15.05 ./autogen.sh ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" make && make install
3. 安装 Yasm
类似上方,另一个汇编器,不用深究,装就是了。
同样依次执行命令
cd ~/ffmpeg_source curl -O -L https://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz tar xzvf yasm-1.3.0.tar.gz cd yasm-1.3.0 ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" make && make install
4. 安装 libx264 libx265
要处理视频,这2个是必须的
依次执行
cd ~/ffmpeg_source git clone --branch stable --depth 1 https://code.videolan.org/videolan/x264.git cd x264 PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static make && make install cd ~/ffmpeg_source git clone --branch stable --depth 2 https://bitbucket.org/multicoreware/x265_git cd ~/ffmpeg_sources/x265_git/build/linux cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED:bool=off ../../source make && make install
5. 安装 ### libfdk_aac
aac编码器,必不可少
libfdk_aac 是一个用于编码和解码 AAC (Advanced Audio Coding) 音频的开源库。它是 Fraunhofer FDK AAC 库的一个分支,Fraunhofer FDK AAC 库是 AAC 音频格式的官方参考实现。
cd ~/ffmpeg_source git clone --depth 1 https://github.com/mstorsjo/fdk-aac cd fdk-aac autoreconf -fiv ./configure --prefix="$HOME/ffmpeg_build" --disable-shared make && make install
6. 安装 ### libmp3lame
mp3格式音频编码器
libmp3lame 是一个用于编码 MP3 音频的库。它提供了对 LAME 编码器的访问,LAME 编码器是一个高质量的开源 MP3 编码器。
cd ~/ffmpeg_source curl -O -L https://downloads.sourceforge.net/project/lame/lame/3.100/lame-3.100.tar.gz tar xzvf lame-3.100.tar.gz cd lame-3.100 ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --disable-shared --enable-nasm make && make install
7. 安装 libopus
libopus 是一个用于编码和解码 Opus 音频格式的库。Opus 是一种免版税、高品质的音频编解码器,专为交互式语音和音乐传输而设计。
cd ~/ffmpeg_source curl -O -L https://archive.mozilla.org/pub/opus/opus-1.3.1.tar.gz tar xzvf opus-1.3.1.tar.gz cd opus-1.3.1 ./configure --prefix="$HOME/ffmpeg_build" --disable-shared make && make install
8. 安装 libvpx
VP8/VP9 编解码器
libvpx 是一个用于编码和解码 VP8 和 VP9 视频格式的库。VP8 和 VP9 是由 Google 开发的开源视频编解码器,以其高质量和高压缩率而闻名。
cd ~/ffmpeg_source git clone --depth 1 https://chromium.googlesource.com/webm/libvpx.git cd libvpx ./configure --prefix="$HOME/ffmpeg_build" --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=yasm make && make install
如果以上安装完毕并且未报错的话,接下来下载ffmpeg最新版源码进行编译安装。如果报错,一般是缺少一些依赖,按照提示尝试
yum install -y xxxx
9. 下载ffmpeg源码并编译安装
cd ~/ffmpeg_source curl -O -L https://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2 tar xjvf ffmpeg-snapshot.tar.bz2 cd ffmpeg PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \ --prefix="$HOME/ffmpeg_build" \ --pkg-config-flags="--static" \ --extra-cflags="-I$HOME/ffmpeg_build/include" \ --extra-ldflags="-L$HOME/ffmpeg_build/lib" \ --extra-libs=-lpthread \ --extra-libs=-lm \ --bindir="$HOME/bin" \ --enable-gpl \ --enable-libfdk_aac \ --enable-libfreetype \ --enable-libharfbuzz \ --enable-libmp3lame \ --enable-libopus \ --enable-libvpx \ --enable-libx264 \ --enable-libx265 \ --enable-nonfree \ --enable-libass make && make install
如果没有报错,那么安装就完成了,尝试执行
ffmpeg -version
看看版本如果出现报错,可能的一个原因是,在执行安装某个库之前,没有进入之前提到的
~/ffmpeg_source
目录,导致找不到对应的依赖,可重新安装,记得先cd ~/ffmpeg_source