真复杂啊
安装 ffmpeg 库有两种途径,一种是自己下载源码再去编译,另一种是使用 vcpkg 自动安装
一般情况下,第二种是最简单方便的,但是如果你需要使用 ffmpeg 的特定历史版本,那就有点困难了
下面记录下我遇到的坑,
借助这篇文章,我打算使用 vcpkg 切换到 ffmpeg 的历史提交并安装
1. cmd 下切换到 vcpkg.exe 的安装目录下,确保该目录下有 .git 文件夹,没有的话,git init 新创建就行
2. 列出 ffmpeg 历史提交
git log --color=always --pretty="%Cred%h%Creset -%C(auto)%d%Creset %Cgreen%s%Creset %Cgreen(%ad)" --date=short | grep --color=never ffmpeg
3. 找到你需要的历史提交,复制并切换,这里你可以先自己 checkout 一个测试分支,以免原始分支(master)受到影响
git checkout 351fbda5b
4. 重新安装 ffmpeg 静态库,如果之前已经安装了最新的,卸载即可
vcpkg install ffmpeg:x86-windows-static
问题来了,到这一步应该就安装成功了,可是事实往往相反,报错了
搜了相关错误文章,没有找到合适的解决方法,所以这条路先放弃
补充:要安装 grep 工具,自行查找安装即可,以及 PowerShell Core 工具,可以到 github 上下载安装包
我又尝试手动编译 ffmpeg 库,下载了相关的源码,并借助这篇文章来学习如何编译
文章中的 MINGW 编译库的方法是可以成功的,不过我们需要在 visual studio 中调试源码,所以要用 msvc 编译源码
方法如下:(x86 版本)
1. 打开 x86 Native Tools Command Prompt for VS 2019,切到 msys64 目录
2. 用 Notepad++ 打开 msys2_shell.cmd 并将下面一行取消注释,取消注释后的代码如下
set MSYS2_PATH_TYPE=inherit
3. 在 x86 Native Tools Command 中运行 msys2_shell.cmd,会自动打开 msys2 窗口,在 msys2 窗口切换到 ffmpeg 源码下,并运行 configure
./configure --prefix=usr/local/ffmpegmsvc --disable-shared --enable-static --toolchain=msvc --enable-gpl
这边理论成功的,但是失败了
ffbuild 文件夹下 config.log 记录了错误原因
BEGIN ./ffconf.ZNgb3tDo/test.c 1 int main(void){ return 0; } END ./ffconf.ZNgb3tDo/test.c cl -nologo -c -Fo./ffconf.ZNgb3tDo/test.o ./ffconf.ZNgb3tDo/test.c test.c ./compat/windows/mslink -nologo -out:./ffconf.ZNgb3tDo/test.exe ./ffconf.ZNgb3tDo/test.o LINK : fatal error LNK1104: 无法打开文件“LIBCMT.lib” C compiler test failed.
这个错误我搜索了很多资料,但是都无法解决
另:我在自己的电脑上操作了上面的安装步骤,是可以成功的,感觉是公司电脑环境有问题,无语
还有要避坑的地方是注意 cl 的路径是否正确,以及 link 的位置,可以使用 which 命令来查看
$ which link /c/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.37.32822/bin/HostX86/x86/link $ which cl /c/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.37.32822/bin/HostX86/x86/cl
特别是 link,往往最后会提醒你找不到匹配的 link.exe,因为配置过程中有可能会使用 msys2 下的 link.exe,我们可以简单的将 link.exe 重命名来避免链接错误
最后打算使用微软出的 vcpkg 控制版本来完成这个需求,使用 vcpkg.json 文件控制,相关文章如下
标签:ffmpeg,windows,--,vcpkg,test,link,安装 From: https://www.cnblogs.com/strive-sun/p/17714860.html