FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。
之前一直没找到官方的安装教程,都是自己下载源码安装,结果导出都是错误。这里先贴一个官网的安装教程(服务器是Centos)https://trac.ffmpeg.org/wiki/CompilationGuide/Centos 。但是安装后还是有错,所以这里记录一下自己的安装过程
目录定义
/usr/local/src/ffmpeg_sources 下载安装包路径 /root/ffmpeg_build 构建和函数库目录 /root/bin 安装函数库后的执行目录
安装依赖库
yum install autoconf automake bzip2 cmake freetype-devel gcc gcc-c++ git libtool make mercurial pkgconfig zlib-devel cd cd /usr/local/src/ mkdir ffmpeg_sources cd ffmpeg_sources
NASM 安装
$HOME 为用户目录 ,echo $HOME 查看位置
curl -O -L http://www.nasm.us/pub/nasm/releasebuilds/2.13.01/nasm-2.13.01.tar.bz2 tar xjvf nasm-2.13.01.tar.bz2 cd nasm-2.13.01 ./autogen.sh ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" make && make install
Yasm 安装
cd .. curl -O -L http://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
libx264 安装
H.264 视频编码器
ffmpeg 编译时要加上参数 --enable-gpl --enable-libx264
cd .. git clone --depth 1 http://git.videolan.org/git/x264 cd x264 PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static make && make install
有可能会出现这样的错误
Found no assembler Minimum version is nasm-2.13 If you really want to compile without asm, configure with --disable-asm.
请安装对应版本或更高版本的 nasm
libx265 安装
H.265/HEVC 视频编码器
ffmpeg 编译时要加上参数 --enable-gpl --enable-libx265
cd .. hg clone https://bitbucket.org/multicoreware/x265 cd x265/build/linux/ cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED:bool=off ../../source make && make install
libfdk_aac 安装
AAC 音频编码器
ffmpeg 编译时要加上参数 --enable-libfdk_aac (和 --enable-nonfree 若你加了 –enable-gpl 参数的话)
cd /usr/local/src/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 安装
mp3 音频编码器
ffmpeg 编译时要加上参数 --enable-libmp3lame
cd .. curl -O -L http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz tar xzvf lame-3.99.5.tar.gz cd lame-3.99.5 ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --disable-shared --enable-nasm make && make install
注:最新版是 3.100,但是 ffmpeg 编译时会错误 ERROR: libmp3lame >= 3.98.3 not found
因为 3.100 < 3.98.3,这个版本号真是醉了,只好下载 3.99.5,地址 https://sourceforge.net/projects/lame/files/lame/
但在我的服务器上,安装了3.99.5还是一直报这个错误,不知道为什么
/root/bin/lame --help LAME 64bits version 3.99.5 (http://lame.sf.net)
找到 enabled libmp3lame ,在它后面加上 -lm,在编译 ffmpeg 之前,修改 ffmpeg 的 configure 文件,/usr/local/src/ffmpeg_sources/ffmpeg/configure
enabled libmp3lame && require "libmp3lame >= 3.98.3" lame/lame.h lame_set_VBR_quality -lmp3lame -lm
libopus 安装
Opus 音频解码器和编码器
ffmpeg 编译时要加上参数 --enable-libopus
cd .. curl -O -L https://archive.mozilla.org/pub/opus/opus-1.2.tar.gz tar xzvf opus-1.2.tar.gz cd opus-1.2 ./configure --prefix="$HOME/ffmpeg_build" --disable-shared make && make install
libogg 安装
比特流库,需要 libtheora 和 libvorbis
cd .. curl -O -L http://downloads.xiph.org/releases/ogg/libogg-1.3.2.tar.gz tar xzvf libogg-1.3.2.tar.gz cd libogg-1.3.2 ./configure --prefix="$HOME/ffmpeg_build" --disable-shared make && make install
libvorbis 安装
Vorbis 音频编码器,需要 libogg
ffmpeg 编译时要加上参数 --enable-libvorbis
cd .. curl -O -L http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.5.tar.gz tar xzvf libvorbis-1.3.5.tar.gz cd libvorbis-1.3.5 ./configure --prefix="$HOME/ffmpeg_build" --with-ogg="$HOME/ffmpeg_build" --disable-shared make && make install
libvpx 安装
VP8/VP9 编码器和解码器
ffmpeg 编译时要加上参数 --enable-libvpx
https://chromium.googlesource.com/webm/libvpx.git 访问不了,你懂的,还好我在github 上找到了 https://github.com/webmproject/libvpx.git
cd .. git clone --depth 1 https://github.com/webmproject/libvpx.git cd libvpx ./configure --prefix="$HOME/ffmpeg_build" --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=yasm make && make install
FFmpeg 安装
cd .. 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 \ --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 make install
请看 libmp3lame 安装若报错 ERROR: libmp3lame >= 3.98.3 not found
安装完成,测试一下。我在 /mnt/hgfs/www/test 目录下放了个视频 1080.mp4 ,使用 ffmpeg 提取视频中图像
cd /mnt/hgfs/www/test ffmpeg -ss 00:00:10 -i 1080.mp4 -f mjpeg -r 1 -vframes 1 -an sample.jpg
若提示 ffmpeg 命令不存在,就将 /root/bin/ 下面的文件复制一份到 /usr/local/bin/
cp -i /root/bin/ffmpeg /usr/local/bin/ffmpeg cp -i /root/bin/ffprobe /usr/local/bin/ffprobe ....