本文为对《FFmpeg 从入门到精通》一书第1章 FFmpeg 简介的学习总结
FFmpeg 中的主要工具有:
- 编解码工具 ffmpeg
12ffmpeg -i input.mp4 output.aviffmpeg -i input.mp4 -f avi output.dat - 播放器 ffplay
- 多媒体分析器 ffprobe
1ffprobe -show_streams output.mp4
通常在 Linux 系统下使用 apt-get install ffmpeg 或 yum install ffmpeg 都可以直接安装 FFmpeg,但版本会比较老,想要学习或使用新功能就需要自行编译安装。
编译安装
1 |
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg # 获取源码 |
进入 ffmpeg 目录即可执行./configure 进行编译操作,但不同平台间会存在一依赖差异
FFmpeg 一些支持的查看
1 2 3 4 5 |
./configure --list-encoders # 查看所支持编码器 ./configure --list-decoders # 查看所支持解码器 ./configure --list-muxers # 查看所支持的封装(Muxing) ./configure --list-demuxers # 查看所支持的解封装(Demuxing) ./configure --list-protocols # 查看所支持的通信协议 |
减小编译体积也可禁用不需要使用到的模块,如:
1 2 |
./configure --disable-encoders --disable-decoders --disable-hwaccels --disable-muxers --disable-demuxers --disable-parsers --disable-bsfs --disable-protocols --disable-indevs --disable-devices --disable-filters # 禁用所有使用--disable-everything |
在关闭之后可定制支持自己所需的模块,如希望支持 H.264视频编码、AAC 音频编码并封装为 MP4(系统需支持 libx264,fdkaac,编译安装方法参见常见问题1和2):
1 |
./configure --disable-encoders --disable-decoders --disable-hwaccels --disable-muxers --disable-demuxers --disable-parsers --disable-bsfs --disable-protocols --disable-indevs --disable-devices --disable-filters --enable-libx264 --enable-libfdk-aac --enable-gpl --enable-nonfree --enable-muxer=mp4 |
让FFmpeg等程序通常会希望对全部用户 直接可用,可在编译时使用 prefix 参数并进行 PATH 的配置,如:
1 2 3 4 5 |
./configure --prefix=/usr/local/ffmpeg # vi /etc/profile,在文件尾部 export FFMPEG_HOME=/usr/local/ffmpeg export PATH=$FFMPEG_HOME/bin:$PATH # source /etc/profile |
Windows
安装 MinGW,http://www.mingw.org(主要需要 C和 C++编译器,可勾选 Basic Setup 中的所有内容)
安装MSYS:http://www.mingw.org/wiki/MSYS
为能够在Windows执行configure编译,可安装以上两者或直接安装 http://www.cygwin.com/
Windows国内安装Git加速地址:https://github.com/waylau/git-for-win
Linux
编译时要求汇编部分的代码需要用到 yasm/nasm,否则会提示添加–disable-x86asm或-disable-asm
1 |
nasm/yasm not found or too old. Use --disable-x86asm for a crippled build. |
书中提到的是安装yasm汇编器
1 2 3 4 5 |
wget 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=/usr/local sudo make && sudo make install |
根据网上资料显示更建议安装 nasm 汇编器,因其维护更为活跃
1 2 3 4 5 6 7 8 9 |
wget https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.gz tar -zxvf nasm-2.14.02.tar.gz cd nasm-2.14.02/ ./configure sudo make && sudo make install # /bin/sh: nasm: command not found sudo ln -s /usr/local/bin/nasm /usr/bin/nasm |
macOS
macOS上编译安装与 Linux 步骤一致,这里略过
常见问题
1、ERROR: libfdk_aac not found
访问https://sourceforge.net/projects/opencore-amr/files/fdk-aac/并下载最新版安装包、解压编译安装即可
如出现`.rodata’ can not be used when making a shared object; recompile with -fPIC,可执行
1 2 |
CFLAGS="-O3 -fPIC" ./configure sudo make && sudo make install |
2、ERROR: libx264 not found
git clone https://code.videolan.org/videolan/x264.git
cd x264
./configure –enable-shared
sudo make && sudo make install
3、error while loading shared libraries: libfdk-aac.so.2: cannot open shared object file: No such file or directory
1 2 3 4 5 |
# vi /etc/ld.so.conf.d/aac.conf /usr/local/lib/ sudo ldconfig -v |
FFmpeg所支持主要外部库列表
- bzip2
- Fontconfig
- Frei0r
- GnuTLS
- libiconv
- libass
- libbluray
- libbs2b
- libcaca
- dcadec
- FreeType
- Game Music Emu
- GSM
- iLBC
- Modplug-XMMS
- LAME
- OpenCORE AMR
- OpenJPEG
- Opus
- RTMPDump
- Schroedinger
- libsoxr
- Speex
- Theora
- TwoLAME
- vid.stab
- VisualOn AAC
- VisualOn AMR-WB
- Vorbis
- vpx
- WavPack
- WebP
- x264
- x265
- XAVS
- Xvid
- XZ Utils
- zlib
以上外部库链接 Alan 在整理时均已进行了验证更换,如今后链接发生变化,欢迎读者在评论区进行更正