原帖地址:https://blog.csdn.net/minger1202/article/details/52302500
Mac上的编译
在Ubuntu系统下编译ffmpeg的源码很方便,缺少什么第三方的工具或者lib直接就可以apt-get,再不行就百度,总之解决起来很方便。最近屌丝鸟枪换Mac了,所以这里就说说Mac上如何编译ffmpeg源码以及如何解决编译过程中遇见的问题。
下载源码配置环境
首先你需要下载源码的地址:https://ffmpeg.org/download.html#get-sources。
你可以运行:”git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg”直接从代码库上down下来,操作2。当然也可以直接把源码的压缩文件下载下来,操作1。
编译源码
-cd ffmpeg
-./configure
-make
-make install
对于一些小白来说,可能都不知道这四个命令都是干什么的,我就简单说明一下后三个命令:cd我就不说了,要是这个都不知道,那也就别编译源码了。./configure是对所要编译的源码的配置。这操作会检测一些系统环境,例如,ffplay的编译是需要sdl(Simple DirectMedia Layer),它是一套用C语言写成的开放源代码的跨平台多媒体开发库。如果没有sdl,那么就无法编译出ffplay。我在编译过程中也遇到了没有sdl这个问题,后面我会以sdl为例子,讲解如何解决编译过程中遇到的问题。make命令就是编译源码,因为源码的编译规则已经写在了makefile里面,所以你只需要make一下就ok了。编译结束后,在ffmpeg文件夹下面会生成几个可执行文件ffplay,ffserver,ffmpeg,ffprobe等。实际上,至此我们已经完成了源码的编译。make install的作用就是把这些命令和编译好的lib安装到你的系统里面。实际上你不安装也可以,在你之后用的时候,就显示的指明执行文件的路径,头文件以及lib的位置就行,不过还是建议安装一下,否则用起来还是比较费事的。
发现问题解决问题
前置条件:如果是Mac,请先安装Xcode。
在执行上面的编译操作后,我发现我并没有生成ffplay,然后一脸懵逼的我不知所措了。。。。
为什么呢? ./configure –help 。发现里面有好多disable,enable的选项。我是不是忘了把ffplay enable了呢?于是,我在此config,./configure –enable-ffplay。结果,还是没有把ffplay编译出来。
打开ffmpeg源码的根目录,你会发现有三个文件,从名字上就能判断他们是和配置有关的,分别是:config.h, config.log还有config.mak。分析一下,代码没编译出ffplay肯定和头文件有关,我就打开了config.h。搜索ffplay关键字,发现有个宏定义#define CONFIG_FFPLAY 0,值是0,可以确定,这就是导致无法编译出ffplay的直接原因。通过名字我们可以看出config.log是配置的日志文件,同样打开它,并搜索关键字ffplay,结果发现里面终于出现了一些有用的信息。通过log,可以看出ffplay编译的时候是需要一些第三方的lib支持的,但是在检查这些lib的时候,发现sdl检测失败。那好吧,既然问题找到了,就顺着这个线索解决吧。在安装sdl的时候,也遇见了一些曲折这里就不说了。我就直奔主题说怎么安装sdl吧。首先你要先下载个工具brew,这个brew有点类似Ubuntu的apt-get,就是,你可以用它直接安装一些东西。
- 安装brew
ruby -e “$(curl –insecure -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”
如果在安装brew的过程有什么问题,请参考这里。 - 安装pkgconfig
sudo port install pkgconfig - 安装sdl
brew install sdl
开始正式编译
cd $ffmpegSourceCodeDir
./configure
make
make install
这下终于把ffplay也编译出来了。
总结:
至此所有的编译工作也就结束了,在网上有很多编译ffmpeg的帖子,而且写的也很详尽。但是,很少有针对编译过程中出现的问题怎么去解决的文章。本文旨在说明编译过程中遇见问题的解决方法,希望对您有帮助。如果在编译期间遇见问题,请给我留言,我们相互交流探讨。
原文地址:https://www.cnblogs.com/blackhumour2018/p/9427797.html