记一次ffmpeg定制过程(msys)

我的工作内容是负责音视频编解码,自然,ffmpeg也是我经常使用的库。而我从来没有在windows上自己编译过。
在某一天,当我把完成的项目交到领导手里时,领导语重心长的对我说,你这个程序太大了啊,回去弄小点,控制在5M之内。我看了看依赖的ffmepg动态库大小,总有28M多,之前用的都是网上别人编译好的库,由此我走上了编译ffmpeg的道路。
没错,查资料,首先配置环境,mingw不用说了,都是别人嚼烂的。下载x264源码,下载ffmpeg源码。

  1. 先编译x264,因为ffmpeg要依赖这个库,跟着网上的做,Windows编译x264 make的时候总是出错,查看config.log文件,fseeko找不到,然后找啊找,找到这个ffmpeg+x264 Windows MSVC 静态编译 ,从此文章发现了问题,configure 之前要加CC=cl,切换编译器。然后正确编译出libx264.lib库。

  2. 继续编译ffmpeg,configure 的参数一定要加–toolchain=msvc,不然就算编译出来了,也要依赖很多mingw的库,在vs里使用会有很多符号冲突和重定义。按照自己的需求定制configue即可。我遇到的问题是添加–enable-libx264参数后找不到libx264.lib库。查看configure帮助–extra-cflags --extra-ldflags两个参数来指定头文件和库文件的路径,由于对mingw不太熟悉,msys.bat命令行里的路径和实际windows文件夹的路径不明白如何转换,导致尝试了很多次,浪费了很多时间。第一次尝试:–extra-cflags=-IF:/x264/include --extra-ldflags=-LF:/x264/lib 报错ERROR: libx264 not found,依旧无法找到libx264库文件。第二次尝试把库拷贝到ffmpeg文件夹下:–extra-cflags=-I./x264/include --extra-ldflags=-L./x264/lib 无效,依然报错ERROR: libx264 not found。之后的三四五六次尝试,还是不行。
    就在我快要放弃的时候一篇文章救了我编译ffmpeg 集成x264,文章最后说道,
    【坑】网上搜索都是–extra-ldflags="-L/usr/local/lib",这样. ./configure后错误是”ERROR: libx264 not found”,如果打开\ffmpeg\config.log,后面发现,错误是“warning LNK4044: 无法识别的选项“/LC:/msys64/usr/local/lib”;-L是GCC使用的,VC编译必须使用–extra-ldflags=-LIBPATH:/usr/local/lib。
    老天,终于过了,走了不少弯路。
    总结:网上的资料零零散散,mingw版本,ffmpeg版本,x264版本不一样就可能导致他能编译通过,而到了自己手里处处是error。所以,一切还是要多尝试,不要怕麻烦,不要怕失败。坑很多,还要靠我们自己去趟。最后链接一篇文章,可能对你有所帮助win7+MinGW编译ffmpeg遇到的问题总结(忽略第二点)。

你可能感兴趣的:(windows)