Linux系统编译FFmpeg
强烈推荐使用系统源安装ffmpeg,例如:
sudo apt install ffmpeg
for Ubuntu。
当不能满足需求的时候再手动编译吧。
有些Linux发行版可以在线安装ffmpeg,但是因为版权关系不能包含我们所需的编码器,有时候还是需要手动编译。
下面介绍一些常见编码器的安装。libx264、libx265、libfdk-aac、libmp3lame、libvpx、libopus、libaom for AV1。不需要的可以不安装,最终ffmpeg configure不指定特定的编码器就可以了。
对版本没要求的,可以使用发行版对应的应用仓库的命令进行安装。
不想自己编译的可以直接下载我编译好的,GNU C Library (GNU libc) 版本大于等于2.17的系统都可以使用。常见的CentOS 7和Ubuntu13.04以上都应该都可以。
百度网盘分享链接
FFmpeg常用第三方库列表
库名 | FFmpeg启用参数 | 功能 | 编译方法 |
---|---|---|---|
x264 | –enable-libx264 | H.264/AVC 编码器 | libx264 |
x265 | –enable-libx265 | HEVC/H.265 编码器 | libx265 |
fdk-aac | –enable-libfdk-aac | AAC 编码器 | libfdk-aac |
lame | –enable-libmp3lame | MP3 编码器 | libmp3lame |
libvpx | –enable-libvpx | VP8/VP9编码器 | libvpx |
opus | –enable-libopus | Opus 编码器 | libopus |
aom | –enable-libaom | AV1 编码器 | libaom |
libwebp | –enable-libwebp | webp 图像编码器 | libwebp |
openssl | –enable-openssl | 解析 https 等加密流协议 | openssl |
zimg | –enable-libzimg | zscale过滤器(图像色彩空间转换) | libzimg |
IntelMediaSDK | –enable-libmfx | Intel QSV 硬件加速编码器 | Intel Media SDK |
SDL | –enable-ffplay | ffplay 播放器渲染 | SDL |
zlib | –enable-zlib | 支持压缩格式的PNG等格式 | zlib |
编译第三方库
nasm
nasm是汇编编译器,有些编码器包含汇编代码,需要使用nasm。有些系统命令安装的nasm版本比较低,比如centos7 yum版本2.10。可以选择手动编译安装2.15版本。
1 | wget https://www.nasm.us/pub/nasm/releasebuilds/2.15.05/nasm-2.15.05.tar.xz |
libx264
libx264是市面上评价比较高的H.264编码器,很多高清电影都是使用x264压缩的。
1 | wget https://code.videolan.org/videolan/x264/-/archive/master/x264-master.tar.bz2 |
Ubuntu系统在线安装
1 | sudo apt install libx264-dev |
libx265
出色的开源H.265编码器,可以使用hg命令下载源码。
hg类似于git,好多系统可以在线安装这个命令。apt install mercurial
/ yum install mercurial
。
默认8bit编码模式,可以在配置时把 HIGH_BIT_DEPTH=ON 选择10bit。
1 | hg clone http://hg.videolan.org/x265 |
Ubuntu系统在线安装
1 | sudo apt install libx265-dev |
libfdk-aac
libfdk-aac是目前评价最高的开源aac编码器。Ubuntu仓库没有这个,必须手动编译安装。
1 | wget -O fdk-aac-2.0.2.tar.gz https://sourceforge.net/projects/opencore-amr/files/fdk-aac/fdk-aac-2.0.2.tar.gz/download |
libmp3lame
libmp3lame 是mp3编码器。
1 | wget -O lame-3.100.tar.gz https://sourceforge.net/projects/lame/files/lame/3.100/lame-3.100.tar.gz/download |
Ubuntu系统在线安装
1 | apt install libmp3lame-dev |
libvpx
libvpx 是开源视频编码格式 VP8/VP9 的编码器。
1 | wget https://github.com/webmproject/libvpx/archive/v1.10.0/libvpx-1.10.0.tar.gz |
Ubuntu系统在线安装
1 | apt install libvpx-dev |
libopus
libopus 是编码opus格式用的。
1 | wget https://archive.mozilla.org/pub/opus/opus-1.3.1.tar.gz |
Ubuntu系统在线安装
1 | apt install libopus-dev |
libaom
新出的 AV1 视频编码器
1 | git clone https://aomedia.googlesource.com/aom |
libwebp
WebP 是Google推出的新一代针对网页的图像编码格式。
1 | git clone https://github.com/webmproject/libwebp.git |
OpenSSL
OpenSSL 是常用的加解密库了,如果FFmpeg想要访问https等加密格式的媒体流的话就需要启用SSL支持,可以使用OpenSSL 或者 GnuTLS。
注意OpenSSL版本,常用的是1.1.1和1.1.0,跳过2.x版本直接升级到3.x版本了,没有其他特殊原因,这里可以安装当前最新版3.0.1。
1 | wget https://www.openssl.org/source/openssl-3.0.1.tar.gz |
Ubuntu系统在线安装
1 | apt install libssl-dev openssl |
libzimg
zimg官方介绍是缩放、色彩空间转换和抖动库。比如要把HDR视频转换为SDR就需要用到-vf zscale
过滤器,要使用这个功能就需要安装这个库,并在配置时指定--enable-libzimg
。
1 | git clone https://github.com/sekrit-twc/zimg.git |
Intel Media SDK - Intel 硬件加速 qsv
Intel处理器可以启用硬件加速视频编码,对应编码器为qsv
和hevc_qsv
不过编码质量不如软件编码高。
下载 Intel-Media-SDK
,https://github.com/Intel-Media-SDK/MediaSDK/releases
,运行install_media.sh
默认安装在/opt/
目录下了。
1 | export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/opt/intel/mediasdk/lib64/pkgconfig |
ffmepg 配置参数
1 | --enable-libmfx |
SDL
SDL是一套开放源代码的跨平台多媒体开发库,支持图像渲染声音播放等功能,编译ffplay需要安装这个库。
1 | wget https://www.libsdl.org/release/SDL2-2.0.18.tar.gz |
Ubuntu系统在线安装
1 | apt install libsdl2-dev |
zlib
Zlib是知名的压缩库,有些媒体格式使用到压缩的必须依赖zlib,比如PNG图片格式。1 | wget http://www.zlib.net/zlib-1.2.11.tar.gz |
Ubuntu系统在线安装
1 | apt install zlib1g-dev |
编译FFmpeg
需要的编码器按照上述的文档安装完后,在配置ffmpeg的时候使用特定的参数指定就可以集成进去了。
下载ffmpeg源码 https://ffmpeg.org/download.html
1 |
|
make install 后 ffmpeg 命令和相应的动态库就安装到系统目录了,默认一般是/usr/local/bin/
和 /usr/local/lib/
目录,可以使用./configure --prefix=./xxxxx
来指定安装目录。
编译 ffplay
默认参数是不编译ffplay,编译ffplay需要先安装SDL
,然后指定配置参数--enable-ffplay
不想动手的编译的,可以点这里下载,百度网盘分享链接。