周末发了一个朋友圈:链接了个ffmpeg花了一天时间,然后还没搞定。
这里记录一下这段诡异的ffmpeg之旅。
背景:
在做剪辑项目时,我想要在Windows上链接ffmpeg,获取音视频编解码的能力。
由于本人刚刚接触Windows编程,很多都不熟悉(刚接触Windows,刚接触Visual Studio),但想着原理应该类似,就打算上手搞一搞它。
链接个三方库步骤谁都知道:或者源码依赖,或者先将它先编译出来,然后指定链接库目录和名字就OK,然而这简单的几步却卡了我好几个小时。
过程:
我想着先编译出来一个ffmpeg的动态库和静态库,于是去Wiki上找到了它的编译脚本:
https://trac.ffmpeg.org/wiki/CompilationGuide
我使用的是Media_Autobuild_suite,运行它的bat脚本时,报错:
它不支持MSVC环境,好家伙,我就想编出来个MSVC的库,它还不让,于是放弃这种方法。
我又去看了MSVC的CompilationGuide,一大堆步骤,感觉太麻烦,就没尝试,我是想找到一个比较方便的脚本,一键可生成的那种,网上找了一段时间,没找到好用的。
好的,那我不编译了,我直接下载官方编译好的去链接还不行吗?
我就去ffmpeg官网下载了Windows平台编译好的库,拿过来链接
在cmake中指定了头文件目录、链接库目录和链接库名字,然而,还是报错:找不到avcodec.lib
我明明已经指定了链接库目录,为什么找不到?我也不知道为啥,我怀疑官网下载的是Mingw编译的,而我本地是MSVC环境,所以报错的?
这块我也没深究,既然都不行,那我用vcpkg安装还不行吗?
vcpkg我也是第一次用,在ffmpeg网站上找到了通过vcpkg安装的方式:
https://trac.ffmpeg.org/wiki/CompilationGuide/vcpkg
但是但是,我用vcpkg始终报错,始终安装失败,看了它的日志,是有一些依赖无法安装。
它默认去按照我电脑的系统去下载x64的依赖包,但在编译x64包时还报错,说我版本不一致。
我就很奇怪,我x64的系统安装x64包怎么就不行呢?
我转去安装x86的包,发现可以安装成功,然而我再安装ffmpeg的时候,它还是去找x64的依赖,这块就绕不过去了。。。
即使我安装x86的ffmpeg也不行。就这么折腾了好久,最后还没成功。
我在想,难道我电脑系统是x64的,但是硬件是x86的?也不至于吧,我也没搞明白咋回事。
折腾了好久也没搞明白。
当天晚上我灵机一动,在想是不是电脑的问题,然后我转而用其它Windows电脑去编译,一下就过了,我了个fuck。
我又把其它电脑的vcpkg目录打包传到了这个电脑上,然后配置了vcpkg.cmake,还是报找不到目录,why?
因为第一次用vcpkg,我还以为它像apt brew之类的东西呢,它安装的东西会自动放置到系统目录,然而不是,还需要指定cmake并且find_package。
在晚上11点多的时候,使用vcpkg+find_package终于搞定了这个问题。
总结:
-
当前项目的构建流程不好用,不方便,无法通过visual studio生成解决方案,很多网上的解决方案都不能使用,后期迭代也不方便
-
电脑环境不知道出了什么问题,换个电脑就可以。
不多说了,这周改动项目构建流程,周末重装电脑系统。
文章评论