序、简介
FFmpeg
- 一个完整的跨平台解决方案,用于记录、转换和流化传输音频和视频的工具
- 文档:https://www.ffmpeg.org/documentation.html
- 官方网站:https://www.ffmpeg.org
这里记录 CentOS7 系统结合部分第三方依赖来源码编译安装 FFMPEG
(比较适合与在个人环境下搭建 ffmpeg,在公共环境下要注意 pkg-config 的注册问题,因为编译安装的时候,下面的指令并不会自动注册到 pkg-config 中,会导致最终 ffmpeg 安装的时候会无法从 pkg-config 中调出第三方安装包的环境信息。)
在私人目录下创建一个新目录,将所有源代码放入:
1 |
mkdir ~/ffmpeg_sources |
一、NASM
NASM(The Netwide Assembler),是一款基于 80×86 和 x86-64 平台的汇编语言编译程序,其设计初衷是为了实现编译器程序跨平台和模块化的特性。NASM支持大量文件格式,包括 Linux,*BSM,a.out,ELF,COFF,Mach-O,Microsoft 16-bit OBJ,Win32 以及 Win64,同时也支持简单的二进制文件生成。
有两种方法:源码编译安装 或者 系统安装
系统安装:
这种方法需要联网状态,但是安装的 NSAM 可能会显示版本太低
1 |
sudo yum install nsam -y |
源码编译安装:
1 2 3 4 5 6 7 8 |
cd ~/ffmpeg_sources curl -O -L https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.bz2 # 现在有2.15.05了-2020-08-28更新 tar -xjvf nasm-2.14.02.tar.bz2 cd nasm-2.14.02 ./autogen.sh ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" make make install |
二、YASM(基于NASM,故装这个最好先装NASM)
YASM 是一个完全重写的 NASM 汇编,基于 NASM 开发的,有较好的优化,对于 NASM 中一些不合理的地方进行了修改。目前,支持 x86 和 AMD64 指令集。
有两种方法:源码编译安装 或者 系统安装
系统安装:
同样必须要联网状态,但是安装的 YASM 可能会显示版本太低,也有一个好处,就是顺便将YASM的依赖也一起安装了
1 |
sudo yum install yasm -y |
源码编译安装:
1 2 3 4 5 6 7 |
cd ~/ffmpeg_sources curl -O -L 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/ffmpeg_build" --bindir="$HOME/bin" make make install |
三、libx264
x264 是一款免费的用于编码 H.264/MPEG-4 AVC 格式的视音频码流库。
官方网站:https://www.videolan.org/developers/x264.html
源码安装:libx264
1 2 3 4 5 6 7 8 9 10 11 12 |
cd ~/ffmpeg_sources git clone --depth 1 http://git.videolan.org/git/x264 cd x264 (or) wget http://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-20191217-2245-stable.tar.bz2 tar -jxf x264-snapshot-20191217-2245-stable.tar.bz2 cd x264-snapshot-20191217-2245-stable PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static make make install |
四、libx265
x265 是一款免费的用于编码 H.265/MPEG-H HEVC 格式的视音频码流库。
官方网站:https://www.videolan.org/developers/x265.html
源码安装:libx265
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
cd ~/ffmpeg_sources hg clone https://bitbucket.org/multicoreware/x265 cd x265/build/linux (or) wget http://download.videolan.org/pub/videolan/x265/x265_3.2.tar.gz tar -xvf x265_3.2.tar.gz cd x265_3.2/build/linux cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED:bool=off ../../source (or) ./make-Makefiles.bash [ press "enter" motidy params & press C and press G ] make make install |
五、libfdk_acc
Fraunhofer FDK AAC(libfdk_acc),是一款不会提供在已编译的 FFMPEG 可执行包中的第三方依赖库,用于 AAC-LC 编码 和 HE-AAC(v1/2) 编码。所以需要在FFMPEG中加入相关包重编译。
源码安装:libfdk_aac
1 2 3 4 5 6 7 |
cd ~/ffmpeg_sources 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 |
六、libmp3lame
LAME 是一款免费的+最好的 MP3 编码器,编码高品质 MP3 的最好也是唯一的选择。
源码安装:libmp3lame
1 2 3 4 5 6 7 |
cd ~/ffmpeg_sources curl -O -L http://downloads.sourceforge.net/project/lame/lame/3.100/lame-3.100.tar.gz tar -zxvf lame-3.100.tar.gz cd lame-3.100 ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --disable-shared --enable-nasm make make install |
七、libopus
Opus 是一种声音编码格式。其前身是 celt 编码器。在当今的有损音频格式中,拥有众多不同编码器的 AAC 格式打败了颇有潜力的 Musepack、Vorbis 等格式。在低码率下 Opus 完胜 HE-AAC。
源码安装:libopus
1 2 3 4 5 6 7 |
cd ~/ffmpeg_sources curl -O -L https://ftp.osuosl.org/pub/xiph/releases/opus/opus-1.3.1.tar.gz tar -zxvf opus-1.3.1.tar.gz cd opus-1.3.1 ./configure --prefix="$HOME/ffmpeg_build" --disable-shared make make install |
八、libogg
Ogg(oggVorbis) 是一种音频压缩格式,类似于 MP3 等音乐格式。Ogg是完全免费、开放、没有专利限制的。其文件拓展名为”.ogg”。
源码安装:libogg
1 2 3 4 5 6 7 |
cd ~/ffmpeg_sources curl -O -L https://ftp.osuosl.org/pub/xiph/releases/ogg/libogg-1.3.4.tar.gz tar -zxvf libogg-1.3.4.tar.gz cd libogg-1.3.4 ./configure --prefix="$HOME/ffmpeg_build" --disable-shared make make install |
九、libvorbis
同为为 FFMPEG 提供 oggVorbis 文件格式的压缩编码。
源码安装:libvorbis
1 2 3 4 5 6 7 |
cd ~/ffmpeg_sources curl -O -L https://ftp.osuosl.org/pub/xiph/releases/vorbis/libvorbis-1.3.7.tar.gz tar -zxvf libvorbis-1.3.7.tar.gz cd libvorbis-1.3.7 ./configure --prefix="$HOME/ffmpeg_build" --with-ogg="$HOME/ffmpeg_build" --disable-shared make make install |
十、speex
Speex 是一款开源免费的、无专利保护的、针对语音设计的音频压缩格式。Speex 编解码器已经被 Opus 编解码器淘汰,但还是可以继续使用。虽然 Opus 比 Speex 好,但 Opus 只支持编码和解码,不支持噪音抑制、声学回音消除等其他处理功能。
(这里并没有将Speex加入FFMPEG编译中,但可以支持的)
1 2 |
cd ~/ffmpeg_sources curl -O -L https://ftp.osuosl.org/pub/xiph/releases/speex/speex-1.2.0.tar.gz |
十一、libvpx
libvpx 是一款开源的 VP8 编码解码器。为 FFMPEG 提供 VP8 编码解码的支持。如编码YUV->VP8(On2 VP8)。
源码安装:libvpx
1 2 3 4 5 6 7 8 |
cd ~/ffmpeg_sources wget https://github.com/webmproject/libvpx/archive/v1.9.0.tar.gz tar -zxvf v1.9.0.tar.gz mv libvpx-1.9.0 libvpx cd libvpx ./configure --prefix="$HOME/ffmpeg_build" --with-ogg="$HOME/ffmpeg_build" --disable-shared make make install |
十二、FFmpeg
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
cd ~/ffmpeg_sources 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-libmp3lame \ --enable-libopus \ --enable-libvorbis \ --enable-libvpx \ --enable-libx264 \ --enable-libx265 \ --enable-nonfree make -j8 make install |