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 ...
随机推荐
- [转帖]给我一分钟,让你彻底明白MySQL聚簇索引和非聚簇索引
https://zhuanlan.zhihu.com/p/142139541 MySQL的InnoDB索引数据结构是B+树,主键索引叶子节点的值存储的就是MySQL的数据行,普通索引的叶子节点的值存储 ...
- Ergonomics JVM 的一种FullGC的说明
https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/ergonomics.html 2 Ergonomics Ergo ...
- [转帖]Optimizing Block Device Parameter Settings of Linux
https://support.huawei.com/enterprise/en/doc/EDOC1000181485/ddbc0e8b/optimizing-block-device-paramet ...
- 【转帖】通过pip命令安装好包之后,在pycharm中不显示此库,也不能调用
目录 1. 问题描述 2. 解决方法1 3. 解决方法2 1. 问题描述 在cmd输入pip list 命令可以看到我的库都已经安装好了,但是pycharm中却没有显示. 在PyCharm查找,并没有 ...
- Crash的简单学习
Crash的简单学习 前言 最近进行海光服务器的压测, 多次出现了压测时宕机的情况. 跟OS,DB还有hardware的vender都进行过沟通, 但都比较难定位具体问题. 麒麟操作系统说需要进行一下 ...
- [转帖]龙芯总强调同频性能,是因奔腾4要到25+GHz才比得上酷睿11代单核
https://baijiahao.baidu.com/s?id=1734320620568707041 闲话不说,先上图,是SPEC CPU 2006 int(单任务)测试的成绩: 上图中的成绩 ...
- 任意文件下载包含https的图片
使用a标签进行下载 <a href="https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ. ...
- 【一个小发现】VictoriaMetrics 中 vmselect 的 `-search.denyPartialResponse` 选项不应该开启
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 一直以为vmselect 的 -search.denyPa ...
- CCFLOW源码解读系列01-----发起流程
1.发起流程 发起流程时主要做了两件事:一是写入业务数据表,二是新建一条审批流程记录. 发起流程的方法 public static Int64 Node_CreateStartNodeWork(str ...
- vs2019系统内置方法无提示
有个同事问我为什么他的vs编写C#代码,对于引用System.dll中的方法,鼠标移上去没有方法的使用说明或接口注释,具体可以看下面的截图,而我绝大多数情况下是使用Rider开发,并没有遇到这个问题, ...