1.到官网www.ffmpeg.org/download.html下载源代码。
(注:下载下来的是master分支,一开始我也是在主分支编译,结果输出的程序只有ffmpeg,ffprobe, 而
ffplay,ffserver,没有出来,文章后面会提到怎么把这两个编出来。)
2.拿到源代码了,想必大家就急着编译吧,是的,一开始我也是,管他呢,先编一下看。到官网上拿到编译命令
./configure --cc=/usr/bin/clang --prefix=/opt/ffmpeg --extra-version=tessus --enable-avisynth --enable-fontconfig --enable-gpl --enable-libass --enable-libbluray --enable-libfreetype --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopus --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-version3 --pkg-config-flags=--static --disable-ffplay
先cd 到 ffmpeg的源码目录(最好在sudo 的权限下执行,我在最后install 的时候就受限,安装不了)
执行 ./configure (这里不使用参数,是简单的编译)
执行 make
make install
3.就是编译问题处理了。(自已编译依赖环境包会有很多问题要解决,不只是下面的这几个)
下面是在执行./configure命令时可能产生的error
nasm/yasm not found or tooold. Use --disable-x86asm for a crippled build.
到http://www.tortall.net/projects/yasm/releases/上下载yasm-1.3.0.tar.gz
下载完成后解压,解压后都在yasm-1.3.0的文件夹里,然后
cd 到yasm-1.3.0的目录
./configure
make
make install
安装好汇编编译后,再回到ffmpeg目录再次./configure检测如果没问题就直接make吧。Make 完了记得make install一下。
在执行./configure 后查看下一是否完整
fsh-mac--00-24-D6-72-E4-6A:FFmpeg fengsh$ ./configure
install prefix /usr/local
source path .
C compiler gcc
C library
ARCH x86(generic)
big-endian no
runtime cpu detection yes
standalone assembly yes
x86 assembler yasm
MMX enabled yes
MMXEXT enabled yes
3DNow! enabled yes
3DNow! extended enabled yes
SSE enabled yes
SSSE3 enabled yes
AESNI enabled yes
AVX enabled yes
AVX2 enabled yes
AVX-512 enabled yes
XOP enabled yes
FMA3 enabled yes
FMA4 enabled yes
i686 features enabled yes
CMOV is fast yes
EBX available yes
EBP available yes
debug symbols yes
strip symbols yes
optimize for size no
optimizations yes
static yes
shared no
postprocessing support no
network support yes
threading support pthreads
safe bitstream reader yes
texi2html enabled no
perl enabled yes
pod2man enabled yes
makeinfo enabled yes
makeinfo supports HTML no
External libraries:
appkit coreimage xlib
avfoundation iconv zlib
bzlib securetransport
External libraries providing hardware acceleration:
audiotoolbox videotoolbox
Libraries:
avcodec avformat swscale
avdevice avutil
avfilter swresample
Programs:
ffmpeg ffprobe
可以看到最后这里只有ffmpeg 和ffprobe,而没有ffplay 和 ffserver,
4.想必大家到这里都不爽吧,编一下这么多错,又是依赖包下载,又是编译安装什么的。
这里也和大家说下,免得走了弯路,浪费时间。
如果想亲自编译依赖包的,可以自己下下来编,但我得告诉你,一定要各个依赖的的版本要十分清楚,不然编译的时候,有可能出现旧版依赖新版,或新版使用旧版的过时接口,更有的就直接出现找不到接口。反正就是在折腾。
那么mac上有没有什么好的方法可以助我们,我觉得有,如何做?往下看。
在mac上安装brew 工具,具体怎么装,这个网上搜一把吧,不难,有xcode 命令行工具的就更好装。
或许有说,都有brew了,那还编过啥呢,直接 brew install ffmpeg 不就完事了么,的确哈。果然是快啊,不过不知道你注意到没有,brew install ffmpeg装好的只有ffmpeg和ffprobe只有这两个,如果你觉得有这两个够了,那也无所谓。
不废话了,用brew info ffmpeg看下ffmpeg的相关信息。
这图中是我把所有依赖都装好了的,打勾表示已经装了,打叉表示没有装。如果有打叉的朋友,建议使用brew install xxx来安装,为啥用这个来装依赖库呢,这个就不用担心版本编译依赖问题,这个自动帮你检测先择相互合适的版本。如装libass,可以brew install libass,如果找不到试下brew install ass,再找不到怎么办?把libass往百度或google 里扔,看下他是在那个包下面的,然后安装装完整包就可以了。一般情况下能找到。祝各位顺利,如果都安装完成了 。那么就可以到ffmpeg源码里尽情的编吧,因为本地的依赖都安装了。不用太担心编译依赖问题。不管是用简单的./configure还是带参数的,都可以试下吧。至于configure后面的参数,过程我会转一篇文章过来,上有说明各个参数之间的情况,只是部分。
重点来了:怎么把ffplay和ffserver给编译出来。
对于ffplay这个需要依赖sdl,如果安装了sdl就可以出来了,我的版本是3.4.2,一开始装了sdl但太旧了编译不过,我又装了sdl2,结果好了。
ffserver 又怎么出来呢?官方网站中有这么一句
一开始我想是不是把这个移到别的项目了,不再在ffmpeg了,我尝试了十来次的编译,尝试开启--enable-ffserverw但都没有用。后来我不得已,试了下切换版本,换到3.0,结果ffserver出来了,于是我猜是不是只有release版才有,而不在master分支,因此我又下了3.4的release包,果然不出我所料。还是有ffserver,就是master没有。现在不猜是不是后面拿掉,这个后面如果更高的版本碰到没有输出ffserver再来想法子。怎么看有没有,很简单的 ./configure --help 找到 program options日志部分一看便知,如图:
编译时记得把 --disable-ffplay 和--disable-ffserver去掉,或改成--enable-ffplay ,--enable-ffserver 。就好啦。
最后还有个注意点,要告诉编译的朋友,因为我尝试了好多次编译,下了好多不同版本的依赖包,因此编译过程中存在一些旧的编译依赖.o文件和依赖关系,导至有些找不到的错误,因此在make前使用一下make clean 把之前编过的清理一下,重新make.
好了,祝大家顺利吧,我去找./configure的参数说明文章了,后面转载过来。方便阅读。