今天试了一下用FFMPEG来调用google的webP,根据官方说明ffmpeg-libwebp;需要--enable-webp; 之前build ffmpeg 没有用这个option,所以重新config上添加了这个选项,配置如下:
./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-libopus --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libvidstab--enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libx264 --enable-libx265 --enable-libxvid --enable-libzmq --enable-version3 --disable-ffplay --disable-indev=qtkit --enable-libopenjpeg--enable-libkvazaar --enable-libilbc--enable-libfdk-aac --enable-nonfree --enable-encoder=aac --enable-libwebp
结果出错,如下:
ERROR: libwebp not found using pkg-config
按常规,缺失的库使用 brew install 一下就可以了,比如x265, 如果提示上面类似的error的话,只要运行如下的安装操作即可:
brew install x265
但是这次使用brew install webp 后,还是同样的 ERROR, 不成功,折腾了好久,最后去看看其他的解决方案。
最后查看pkg-config的机制,终于解决了。所以这里也给遇到同样问题的人提供一个思路。问题虽然简单,但是如果不了解的话,还是会浪费很多时间在这些细小问题上。
关于pkg-config,可以查看官方文档pkg-config或者百度一下,这里不详述。
一般Mac系统默认的pkg-config目录在
/usr/local/lib/pkgconfig
下,而ffmpeg 的./configure 也是在这个目录下搜索相应被enable的库的pkg-config 配置文件 xxx.pc, 如 libwebp.pc, libx265.pc 等等
之所以 提示刚开始提到的ERROR,是因为在/usr/local/lib/pkgconfig目录下,没有找到对应的libwebp.pc配置文件。
而我们使用brew install 命令安装库时,其安装的目录是
/usr/local/Cellar/
比如,brew install webp,则其安装的目录
/usr/local/Cellar/webp
-----相应的文件包括bin, include, lib等子目录。
-----同时lib子目录就包含lib/pkgconfig/ libwebp.pc等文件。
说到这里,相信知道怎么做了,就是创建一个软连接
ln -s /usr/local/lib/pkgconfig/libwebp.pc ../../Cellar/webp/0.6.0_2/lib/pkgconfig/libwebp.pc
这样就可以解决libwebp.pc 找不到的问题,当然为了妥当起见,后面还需要创建相应的软连接,如对/usr/local/lib和/usr/local/include创建相应的软连接对应webp相应的库和头文件,如下所示:
/usr/local/lib/ibwebp.a -> ../Cellar/webp/0.6.0_2/lib/libwebp.a
/usr/local/include/decode.h -> ../Cellar/webp/0.6.0_2/include/webp/decode.h
一般brew install 命令会同时完成.pc libxxx, xxx.h相应的软连接的创建,可能webp的安装稍微特殊。
基于上面的方案,再build ffmpeg, 就没问题了。
相信如果有同样其他库有相似的问题,可以用相似的方法解决。
以上是我粗略的总结,有其他更好的方案或者有错误的地方希望大家指出或者分享更好的方案。