windows 上 ffmpeg 库的安装
真复杂啊
安装 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 文件控制,相关文章如下
更新:(两种方法都可以正常工作)
站内有专门的文章介绍了两种使用 Mainifest 方法,第一种是在 cmake 时检测 vcpkg.json 并构建 .sln 工程
注意:baseline 是控制的最低版本,但是 vcpkg 提供的一些库的历史 baseline 并没有用,在 cmake 时会提示错误,建议多测试几个 baseline
第二种是在 msbuild 中检测 vcpkg.json,该方法是在 build 工程时检测是否有 json 文件(vcpkg.json 需要放在 .sln 同级目录下),如果有,则依赖清单中的库,方法比较简单
补充:这两种方法都需要设置环境变量

变量值个人感觉设置 versions 或者 mainifest 都可以
另外还需要全局集成,命令行输入
vcpkg integrate install
一个简单的 vcpkg.json
{
"name": "versions-test",
"version": "1.0.0",
"dependencies": [
"ffmpeg",
"pthreads",
"openssl",
"glew",
"glfw3",
"sdl2"
],
"builtin-baseline": "6a349fe1fbea1e5fcda2e0775f555d829a5e82df",
"overrides": [
{ "name": "ffmpeg", "version": "4.4" },
{ "name": "glew", "version": "2.2.0"},
{ "name": "glfw3", "version": "3.3.8"},
{ "name": "sdl2", "version": "2.26.2"}
]
}

ffmpeg 是 C 接口,需要在相关头文件前加 extern 声明
extern "C" {
#include "libavcodec/avcodec.h"
}
avcodec 库会引用 windows 系统库,添加一些需要的库是必要的,如下:
ws2_32.lib
crypt32.lib
shlwapi.lib
winmm.lib
ddraw.lib
dxguid.lib
mfuuid.lib
Mfplat.lib
mf.lib
Secur32.lib
Strmiids.lib
Bcrypt.lib
注意:有些库不是必要的,仅供参考
windows 上 ffmpeg 库的安装的更多相关文章
- Windows上python开发--2安装django框架
Windows上python开发--2安装django框架 分类: 服务器后台开发2014-05-17 21:22 2310人阅读 评论(2) 收藏 举报 python django 上一篇文章中讲了 ...
- Hadoop 在windows 上伪分布式的安装过程
第一部分:Hadoop 在windows 上伪分布式的安装过程 安装JDK 1.下载JDK http://www.oracle.com/technetwork/java/javaee/d ...
- 【Qt开发】Qt Creator在Windows上的调试器安装与配置
Qt Creator在Windows上的调试器安装与配置 如果安装Qt时使用的是Visual Studio的预编译版,那么很有可能就会缺少调试器(Debugger),而使用MSVC的Qt对应的原生调试 ...
- 在 Windows 上使用压缩文件 安装 MySQL
在 Windows 上使用压缩文件 安装 MySQL 1. 下载 MySQL mysql-5.7.27-win32.zip:二进制文件; 服务器类型: mysqld 2. 解压 mysql-5.7.2 ...
- Windows上python的virtualenv 安装及使用
源地址:http://blog.csdn.net/liuchunming033/article/details/46008301 VirtualEnv可以方便的解决不同项目对类库的依赖问题. 现实测试 ...
- 逐步在Windows上结合CopSSH + msysGit安装安装Git Server同时集成Git使用Visual Studio
v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...
- 在 Windows 上进行 Laravel Homestead 安装、配置及测试
软件环境:在 Windows 7 64位 上基于 VirtualBox 5.2.12 + Vagrant 2.1.1 使用 Laravel Homestead. 1.准备 先下载VirtualBox- ...
- 在windows上,使用虚拟机安装苹果操作系统
以下是我这两天安装这个苹果操作系统时,所看的文档,集合.已经成功,再次做一个摘录. 分别看了一下几个链接: http://www.bubuko.com/infodetail-2257390.html ...
- Windows上Kafka运行环境安装
1. 安装JDK 1.1 安装文件:http://www.oracle.com/technetwork/java/javase/downloads/index.html 下载JDK1.2 安装完成后需 ...
- Windows上PostGIS(压缩版)安装
PostGIS安装 1.软件下载 postgresql-9.6.1-1-windows-x64-binaries.zip https://www.postgresql.org/download/win ...
随机推荐
- [转帖]PD Control 使用说明
https://docs.pingcap.com/zh/tidb/stable/pd-control PD Control 是 PD 的命令行工具,用于获取集群状态信息和调整集群. 安装方式 注意 ...
- [转帖]TiUP 常见运维操作
https://docs.pingcap.com/zh/tidb/stable/maintain-tidb-using-tiup 本文介绍了使用 TiUP 运维 TiDB 集群的常见操作,包括查看集群 ...
- [转帖]Jmeter学习笔记(十)——元件的作用域和执行顺序
https://www.cnblogs.com/pachongshangdexuebi/p/11582891.html jmeter是一个开源的性能测试工具,它可以通过鼠标拖拽来随意改变元件之间的顺序 ...
- kafka学习之五_多个磁盘的性能验证
kafka学习之五_多个磁盘的性能验证 背景 周末在家学习kafka 上午验证了grafana+kafka_exporter的监控 下午想着验证一把性能相关. kafka学习之三里面,有成套的脚本. ...
- 国产CPU制造工艺与部分性能总结
国产CPU制造工艺与部分性能总结 背景 最近一段时间验证了很多国产CPU的性能. 感觉很多地方与之前的理解有一些偏差. 前几天总结了部分架构和指令集相关的差异 今天想着总结一下制造相关的部分. 希望能 ...
- STM32CubeMX教程24 WDG - 独立窗口看门狗
1.准备材料 开发板(正点原子stm32f407探索者开发板V2.4) STM32CubeMX软件(Version 6.10.0) 野火DAP仿真器 keil µVision5 IDE(MDK-Arm ...
- git提交出现running pre-commit hook: lint-staged
现象 今天提交代码的时候出现了 > running pre-commit hook: lint-staged Stashing changes... [started] Stashing cha ...
- 【笔记】VictoriaMetrics中,对大量的pull模式的targets进行分片
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 配置的方法请看这里:https://docs.victor ...
- HarmonyOS实战[一]——原理概念介绍安装:基础篇
[本文正在参与"有奖征文|HarmoneyOS征文大赛"活动] 相关文章: HarmonyOS实战[一]--原理概念介绍安装:基础篇 HarmonyOS实战[二]-超级详细的原子化 ...
- 19.10 Boost Asio 同步文件传输
在原生套接字编程中我们介绍了利用文件长度来控制文件传输的方法,本节我们将采用另一种传输方式,我们通过判断字符串是否包含goodbye lyshark关键词来验证文件是否传输结束了,当然了这种传输方式明 ...