记一次ffmpeg坑爹之旅

2022年3月29日 370点热度 0人点赞 0条评论

周末发了一个朋友圈:链接了个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生成解决方案,很多网上的解决方案都不能使用,后期迭代也不方便

  • 电脑环境不知道出了什么问题,换个电脑就可以。

不多说了,这周改动项目构建流程,周末重装电脑系统。


图片

75450记一次ffmpeg坑爹之旅

这个人很懒,什么都没留下

文章评论