FFmpeg下载编译、代码结构以及编译系统
从这里开始,就要踏上学习FFmpeg的旅程了,使用的FFmpeg版本5.0.1
1、ubuntu下,如何下载并编译FFmpeg源码
打开FFmpeg官网 Download FFmpeg,我们可以通过git来下载源码
$ git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
也可以拉到页面底部,查看不同的FFmpeg版本,按需下载压缩包。我这里是下载的5.0.1版本的压缩包,执行命令解压
$ tar xvf ffmpeg-5.0.1.tar.xz
进入到工程目录下执行以下命令,可以获取到很多帮助信息
$ ./configure --help
我这里就用默认配置,不去添加或删除模块,执行以下命令指定保存编译结果的路径,这里的路径得用绝对路径(第一次使用~代码home,编译完没有找到编译结果)
$ ./configure --prefix=/home/xxx/work/ffmpeg-5.0.1/out
执行make 和 make install
$ make -j4 #编译 $ make install #将结果拷贝到out目录
生成如下内容
bin中是可执行程序,包括有ffplay以及ffprobe
include是编译用到的头文件
lib中是编译生成的静态库,如果想生成动态库可以通过执行configure来配置
share中是生成的操作手册
2、代码结构
FFmpeg的代码结构相当的工整!不由的想感慨一下,真是个艺术品!
compat目录:如其名字该目录是为了兼容不同平台儿创建的,有很多的头文件
ffbuild目录:存放了configure的配置文件以及相关的makefile文件
fftools目录:存放有ffplay以及ffprobe的源码
libavcodec目录:编码和解码库源码所在路径
libavdevice目录:与设备相关的代码,比如sdl显示设备、alsa音频输出设备、opengl图像加速设备、v412视频采集设备
libavfilter目录:
libavformat目录:复用和解复用代码库
libavutil目录:工具库
libpostproc目录:后其处理库
libswresample目录:音频重采样,格式转换和混合库
libswscale目录:颜色空间转换和大小尺寸缩放代码库
3、windows下如何编译ffmpeg
网上资料层出不穷,踩了很多坑,最后还是没有编译成功!
a. 首先安装mingw,并在环境变量中添加
b.安装MSYS2环境,这里主要是参考的博文 MSYS2+mingw 编译 ffmpeg 在windows下完整过程_坚持学习不能松懈的博客-CSDN博客_msys2编译windows程序
基本参考上面的博文之后就没有什么问题了,但是我在configure时碰到以下错误 gcc is unable to create an executable file,这是因为上面的环境变量没有正确添加,添加完之后重启电脑就OK了。
configure的步骤和linux下基本相同,接着执行make,报错 cc1: some warnings being treated as errors,我直接将ffbuild/config.mak中CFLAGS中的-Werror都删掉了,虽然不讲武德,但好歹是可以继续编译了。
后续的编译又有层出不穷的问题,先搁置,等有空了再来整理一下gcc环境!
还好官网有提供现成的dll和lib给我们使用!使用方法可以参考 VS下搭建FFmpeg开发环境_奋斗吧!骚年!的博客-CSDN博客