强烈推荐使用系统源安装ffmpeg,例如:
sudo apt install ffmpeg
for Ubuntu。
当不能满足需求的时候再手动编译吧。
更多FFmpeg第三方库编译集成,详见我的新博客:https://blog.lmshao.com/how-to-build-ffmpeg.html
有些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以上都应该都可以。
https://github.com/lmshao/FFmpegBinary/releases
nasm是汇编编译器,有些编码器包含汇编代码,需要使用nasm。有些系统命令安装的nasm版本比较低,比如centos7 yum版本2.10。可以选择手动编译安装2.15版本。
wget https://www.nasm.us/pub/nasm/releasebuilds/2.15.05/nasm-2.15.05.tar.xz
tar Jxvf nasm-2.15.05.tar.xz
pushd nasm-2.15.05
./configure
make && make install
popd
libx264是市面上评价比较高的H.264编码器,很多高清电影都是使用x264压缩的。
wget https://code.videolan.org/videolan/x264/-/archive/master/x264-master.tar.bz2
tar jxvf x264-master.tar.bz2
pushd x264-master
./configure --enable-shared
make && make install
popd
Ubuntu系统在线安装
sudo apt install libx264-dev
hg类似于git,好多系统可以在线安装这个命令。apt install mercurial
/ yum install mercurial
。
默认8bit编码模式,可以在配置时把 HIGH_BIT_DEPTH=ON 选择10bit。
hg clone http://hg.videolan.org/x265
pushd x265/build/linux/
cmake ../../source -DHIGH_BIT_DEPTH=ON
make && make install
popd
Ubuntu系统在线安装
sudo apt install libx265-dev
libfdk-aac是目前评价最高的开源aac编码器。Ubuntu仓库没有这个,必须手动编译安装。
wget -O fdk-aac-2.0.1.tar.gz https://sourceforge.net/projects/opencore-amr/files/fdk-aac/fdk-aac-2.0.1.tar.gz/download
tar zxvf fdk-aac-2.0.1.tar.gz
pushd fdk-aac-2.0.1
./configure
make && make install
popd
libmp3lame 是mp3编码器。
wget -O lame-3.100.tar.gz https://sourceforge.net/projects/lame/files/lame/3.100/lame-3.100.tar.gz/download
tar zxvf lame-3.100.tar.gz
pushd lame-3.100
./configure
make && make install
popd
Ubuntu系统在线安装
apt install libmp3lame-dev
libvpx 是开源视频编码格式 VP8/VP9 的编码器。
wget https://github.com/webmproject/libvpx/archive/v1.10.0/libvpx-1.10.0.tar.gz
tar zxvf libvpx-1.10.0.tar.gz
pushd libvpx-1.10.0
mkdir libvpx-build && cd libvpx-build
../configure --enable-shared --disable-static
make && make install
popd
Ubuntu系统在线安装
apt install libopus-dev
libopus 是编码opus格式用的。
wget https://archive.mozilla.org/pub/opus/opus-1.3.1.tar.gz
tar zxvf opus-1.3.1.tar.gz
pushd opus-1.3.1
./configure --enable-shared --disable-static
make && make install
popd
Ubuntu系统在线安装
apt install libopus-dev
新出的 AV1 视频编码器
git clone https://aomedia.googlesource.com/aom
git checkout v3.2.0 -b v3.2.0 #可指定版本
mkdir build && pushd build
cmake .. -DBUILD_SHARED_LIBS=1
make && make install
下载Intel-Media-SDK
,https://github.com/Intel-Media-SDK/MediaSDK/releases
,运行install_media.sh
默认安装在/opt/
目录下了。
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/opt/intel/mediasdk/lib64/pkgconfig
ffmepg 配置参数
--enable-libmfx
需要的编码器按照上述的文档安装完后,在配置ffmpeg的时候使用特定的参数指定就可以集成进去了。
wget https://www.ffmpeg.org/releases/ffmpeg-4.4.tar.bz2
tar jxvf ffmpeg-4.4.tar.bz2
pushd ffmpeg-4.4
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/:$PKG_CONFIG_PATH
./configure --enable-shared --disable-static --enable-gpl --enable-nonfree \
--enable-libx264 \
--enable-libx265 \
--enable-libfdk-aac \
--enable-libmp3lame \
--enable-libvpx \
--enable-libopus \
--enable-libaom
make && make install
popd
make install 后 ffmpeg 命令和相应的动态库就安装到系统目录了,默认一般是/usr/local/bin/
和 /usr/local/lib/
目录,可以使用./configure --prefix=./xxxxx
来指定安装目录。
默认编译可能没有编译出来ffplay,可以通过以下方法编译ffplay。
安装SDL2
sudo apt install libsdl2-dev # Ubuntu
configure 参数
--enable-ffplay
不想动手的,可以下载这个FFmpeg 4.4.1 Binary。