原文:https://blog.jam00.com/article/info/24.html
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。
之前一直没找到官方的安装教程,都是自己下载源码安装,结果导出都是错误。这里先贴一个官网的安装教程(服务器是Centos)https://trac.ffmpeg.org/wiki/CompilationGuide/Centos 。但是安装后还是有错,所以这里记录一下自己的安装过程
目录定义
/usr/local/src/ffmpeg_sources 下载安装包路径
/root/ffmpeg_build 构建和函数库目录
/root/bin 安装函数库后的执行目录
安装依赖库
1 2 3 4 | 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 查看位置
1 2 3 4 5 6 | 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 安装
1 2 3 4 5 6 | 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
1 2 3 4 5 | 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 |
有可能会出现这样的错误
1 2 3 | 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
1 2 3 4 5 | 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 参数的话)
1 2 3 4 5 6 | 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
1 2 3 4 5 6 | 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还是一直报这个错误,不知道为什么
1 2 | /root/bin/lame --help LAME 64bits version 3.99.5 (http: //lame .sf.net) |
在编译 ffmpeg 之前,修改 ffmpeg 的 configure 文件,/usr/local/src/ffmpeg_sources/ffmpeg/configure
找到 enabled libmp3lame ,在它后面加上 -lm,
enabled libmp3lame && require "libmp3lame >= 3.98.3" lame/lame.h lame_set_VBR_quality -lmp3lame -lm
libopus 安装
Opus 音频解码器和编码器
ffmpeg 编译时要加上参数 --enable-libopus
1 2 3 4 5 6 | 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
1 2 3 4 5 6 | 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
1 2 3 4 5 6 | 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
1 2 3 4 5 | 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 安装
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 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 |
若报错 ERROR: libmp3lame >= 3.98.3 not found
请看 libmp3lame 安装
安装完成,测试一下。我在 /mnt/hgfs/www/test 目录下放了个视频 1080.mp4 ,使用 ffmpeg 提取视频中图像
1 2 | 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/
1 2 3 | cp -i /root/bin/ffmpeg /usr/local/bin/ffmpeg cp -i /root/bin/ffprobe /usr/local/bin/ffprobe .... |
提取的图片 sample.jpg
本内容为博主原创,转载请注明出处。本文链接 https://blog.jam00.com/article/info/24.html