下载源码
在 GitHub 下载源码包:FFmpeg
我下了 4.4 演示,根据需要选取版本,建议选定版本就不要变了,FFmpeg 每个大版本都会改东西,换一个版本就要重新研究一遍。
API 改、结构体改、连宏定义都改,绝了。之所以在网上很少有 FFmpeg 的文档资料,是因为你写文档的速度不一定有他改代码快。。。
要了解 API 怎么用只能啃源代码,或者使用 Doxygen 从源代码生成 API 文档。后面再写一篇博客介绍怎么使用 Doxygen 从源码文件生成 API 文档吧。网上找到一个连接也是用 Doxygen 的,可以看一下:FFmpeg API,修改 URL 的版本号可以查看其它版本的接口。
源码压缩包解压之后有个 FFmpeg-master 的目录,所有的文件都包含在这个目录里面。
大部分开源项目的构建流程主要都分为两步:
- 使用 configure 文件进行编译前的配置;
- 使用 Makefile 文件进行编译。
configure
configure 文件是一个 shell 脚本,主要是完成编译前的配置,如:获取操作系统的环境信息,根据 CPU 架构选取编译器、根据需要编译指定的功能模块、检测依赖的组件是否安装、指定软件编译完成后的安装路径等配置信息。
查看 configure 的用法:
$ ./configure --help
执行这条命令会列出 configure 脚本支持的所有参数的使用说明,在这里介绍一些常见的参数。
# 安装路径的配置
--logfile=FILE # 日志文件的输出路径
--prefix=PREFIX # 安装路径
--bindir=DIR # 二进制文件的安装路径
--datadir=DIR # 数据文件的安装路径
--docdir=DIR # 文档的安装路径
--libdir=DIR # 库的安装路径
--shlibdir=DIR # 共享库的安装路径
--incdir=DIR # 头文件的安装路径
--mandir=DIR # 手册的安装路径
# license
--enable-gpl # 允许使用 GPL 代码,生成的库和二进制文件将遵循 GPL
--enable-version3 # 更新 GPL 到版本 3
--enable-nonfree # 允许使用不开源代码
# 编译选项配置
--disable-static # 不构建静态库
--enable-shared # 构建动态库
--enable-small # 优化生成文件的体积,对应的编译速度会下降
# 二进制文件构建配置
--disable-programs # 不构建命令行程序
--disable-ffmpeg # 不构建 FFmpeg
--disable-ffplay # 不构建 ffplay
--disable-ffprobe # 不构建 ffprobe
# 文档构建配置
--disable-doc # 不构建文档
--disable-htmlpages # 不构建 HTML 文档
--disable-manpages # 不构建 man 手册
--disable-txtpages # 不构建文本文档
# 组件禁用
--disable-avdevice # 不构建 libavdevice
--disable-avcodec # 不构建 libavcodec
--disable-avformat # 不构建 libavformat
--disable-swresample # 不构建 libswresample
--disable-swscale # 不构建 libswscale
--disable-postproc # 不构建 libpostproc
--disable-avfilter # 不构建 libavfilter
# 外部库
--disable-alsa # 禁用 ALSA
--enable-libopencv # 启用 OpenCV
--enable-libopenh264 # 通过 OpenH264 启用 H.264 编码
--enable-libopenjpeg # 通过 OpenJPEG 启用 JPEG 编/解码
--enable-libv4l2 # 启用 v4l2
--enable-libx264 # 通过 x264 启用 H.264 编码
--enable-libx265 # 通过 x265 启用 H.265 编码
--enable-opengl # 启用 OpenGL 渲染
--enable-openssl # 启用 OpenSSL
上面这些是比较常见的参数,configure 还有很多花里胡哨的参数,有需要可以自己研究。
configure 配置栗子:
安装目录:/usr/local/ffmpeg-4.4
构建动态库,启用 X264、X265
先安装依赖 X264、X265
$ sudo apt install libx264-dev libx265-dev
configure 配置
$ ./configure --prefix=/usr/local/ffmpeg-4.4 --enable-shared --disable-static --enable-gpl --enable-libx264 --enable-libx265
make
开启 4 线程编译,单线程可以去掉 -j4
$ make -j4
安装
$ sudo make install
make install 之后,FFmpeg 就安装到了前面 configure 配置的 /usr/local/ffmpeg-4.4 目录。
配置路径
$ export LD_LIBRARY_PATH=/usr/local/ffmpeg-4.4/lib:$LD_LIBRARY_PATH
$ export PATH=/usr/local/ffmpeg-4.4/bin:$PATH
如果要放到其他机器(硬件平台一致)上用的话,直接把 /usr/local/ffmpeg-4.4 打包到新机器,解压然后配置路径就可以了。