ffmpeg 7.0 + vs2022 +windows编译

后面有总结:

安装msys2
打开 (这一步非常重要不然就得指定vs的环境)

x64 Native Tools Command Prompt for VS 2022

运行
在x64 Native Tools Command Prompt for VS 2022命令行中切换到msys2安装目录中
打开

msys2_shell.cmd

运行 安装

pacman -S diffutils make pkg-config yasm
$ pacman -S diffutils make pkg-config yasm
warning: diffutils-3.10-1 is up to date -- reinstalling
warning: make-4.4.1-2 is up to date -- reinstalling
warning: pkgconf-2.1.1-1 is up to date -- reinstalling
warning: yasm-1.3.0-3 is up to date -- reinstalling
resolving dependencies...
looking for conflicting packages...Packages (4) diffutils-3.10-1  make-4.4.1-2  pkgconf-2.1.1-1  yasm-1.3.0-3Total Installed Size:  5.36 MiB
Net Upgrade Size:      0.00 MiB:: Proceed with installation? [Y/n] y
(4/4) checking keys in keyring                               [###############################] 100%
(4/4) checking package integrity                             [###############################] 100%
(4/4) loading package files                                  [###############################] 100%
(4/4) checking for file conflicts                            [###############################] 100%
(4/4) checking available disk space                          [###############################] 100%
:: Processing package changes...
(1/4) reinstalling diffutils                                 [###############################] 100%
(2/4) reinstalling make                                      [###############################] 100%
(3/4) reinstalling pkgconf                                   [###############################] 100%
(4/4) reinstalling yasm                                      [###############################] 100%
:: Running post-transaction hooks...
(1/1) Updating the info directory file...

之后切换到ffmpeg源码目录下:
下载源码:
https://github.com/FFmpeg/FFmpeg.git

切换到目录下

执行:

./configure --prefix=/usr/local/ffmpeg --enable-gpl --enable-nonfree --enable-shared --disable-ffprobe --toolchain=msvc

关闭ffprobe方式:
下面有不关闭。

$ ./configure --prefix=/usr/local/ffmpeg --enable-gpl --enable-nonfree --enable-shared --disable-ffprobe --toolchain=msvc
cl.exe is unable to create an executable file.
If cl.exe is a cross-compiler, use the --enable-cross-compile option.
Only do this if you know what cross compiling means.
C compiler test failed.If you think configure made a mistake, make sure you are using the latest
version from Git.  If the latest version fails, report the problem to the
ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.libera.chat.
Include the log file "ffbuild/config.log" produced by configure as this will help
solve the problem.

这个报错是因为没有指定 用vs环境变量编译,要么打开上面的x64 Native Tools Command Prompt for VS 2022
要么手动添加环境变量或指定到msys2中。
建议打开

完事之后:

Enabled indevs:
dshow                   gdigrab                 lavfi                   vfwcapEnabled outdevs:License: nonfree and unredistributable

多线程编译:

数字8、根据cpu内核自行决定

make -j 8 && make install

报错:

E:\A\program\github\FFmpeg\config.h(1): warning C4828: 文件包含在偏移 0x21d 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
fftools/opt_common.c(206): error C2001: 常量中有换行符
fftools/opt_common.c(206): fatal error C1907: 无法从以前的错误中恢复;正在停止编译
make: *** [ffbuild/common.mak:81: fftools/opt_common.o] Error 2
make: *** Waiting for unfinished jobs....
LD      libavcodec/avcodec-61.dll正在创建库 libavcodec/avcodec.lib 和对象 libavcodec/avcodec.exp

在fftools/opt_common.c(206)
注释掉

    //av_log(NULL, level, "%sbuilt with %s\n", indent, CC_IDENT);


C:\msys64\usr\local\ffmpeg
下有所有的库

编译带不关闭ffprobe

$ ./configure --prefix=/usr/local/ffmpeg--enable-gpl --toolchain=msvc

报错:

前源字符集中无效(代码页 65001)。
fftools/ffprobe.c(434): warning C4267: “=”: 从“size_t”转换到“int”,可能丢失数据
fftools/ffprobe.c(653): warning C4267: “函数”: 从“size_t”转换到“int”,可能丢失数据
fftools/ffprobe.c(2624): warning C4267: “函数”: 从“size_t”转换到“int”,可能丢失数据
fftools/ffprobe.c(2625): warning C4267: “函数”: 从“size_t”转换到“int”,可能丢失数据
fftools/ffprobe.c(4082): warning C4129: “A”: 不可识别的字符转义序列
fftools/ffprobe.c(4082): warning C4129: “p”: 不可识别的字符转义序列
fftools/ffprobe.c(4082): warning C4129: “g”: 不可识别的字符转义序列
fftools/ffprobe.c(4082): warning C4129: “F”: 不可识别的字符转义序列
fftools/ffprobe.c(4082): warning C4129: “w”: 不可识别的字符转义序列
fftools/ffprobe.c(4082): warning C4129: “s”: 不可识别的字符转义序列
fftools/ffprobe.c(4082): fatal error C1001: 内部编译器错误。
(编译器文件“D:\a\_work\1\s\src\vctools\Compiler\CxxFE\sl\p1\c\preprocessor.cpp”,第 3705)要解决此问题,请尝试简化或更改上面所列位置附近的程序。
如果可以,请在此处提供重现步骤: https://developercommunity.visualstudio.com
请选择 Visual C++
“帮助”菜单上的“技术支持”命令,或打开技术支持帮助文件来获得详细信息。
make: *** [ffbuild/common.mak:81: fftools/ffprobe.o] Error 2
make: *** Waiting for unfinished jobs....

关闭 ffprobe.c 4082行代码:

//print_str("compiler_ident", CC_IDENT);

静态库编译:

./configure --prefix=/usr/local/ffmpeg --enable-gpl --enable-nonfree --toolchain=msvc --enable-static

静态库添加debug调试信息:–extra-cflags=“-g”
msvc是-Zi

./configure --prefix=/usr/local/ffmpeg --enable-gpl --enable-nonfree --toolchain=msvc --enable-static --extra-cflags="-Zi"
./configure --prefix=/usr/local/ffmpeg --enable-gpl --enable-nonfree --toolchain=msvc --enable-static --extra-cflags="-g"

编译 FFmpeg 通常需要一些步骤和配置,特别是在 Windows 环境下。下面是一个整理后的步骤,以便在 Windows 中使用 Visual Studio 2022 编译 FFmpeg:

前提条件:

  • 安装 Visual Studio 2022。
  • 安装 MSYS2。
  • 下载 FFmpeg 源代码。

步骤:

  1. 安装 MSYS2

    • 打开 x64 Native Tools Command Prompt for VS 2022。
    • 执行 msys2_shell.cmd
  2. 安装必要的依赖项

    pacman -S diffutils make pkg-config yasm
    
  3. 下载 FFmpeg 源代码

    git clone https://github.com/FFmpeg/FFmpeg.git
    
  4. 配置 FFmpeg

    cd FFmpeg
    ./configure --prefix=/usr/local/ffmpeg --enable-gpl --enable-nonfree --enable-shared --disable-ffprobe --toolchain=msvc
    

    如果想要开启 ffprobe,可以使用下面的配置:

    ./configure --prefix=/usr/local/ffmpeg --enable-gpl --enable-nonfree --toolchain=msvc
    

    若要编译静态库并添加调试信息,可以使用以下配置:

    ./configure --prefix=/usr/local/ffmpeg --enable-gpl --enable-nonfree --toolchain=msvc --enable-static --extra-cflags="-g"
    
  5. 编译 FFmpeg

    make -j 8 && make install
    
  6. 处理可能的错误

    • 如果编译时出现错误,可以根据错误信息调整配置或修复代码。
    • 例如,在 fftools/ffprobe.c 中的某些行可能需要注释掉以避免错误。
    • 根据具体情况,可能需要修改其他文件或配置。
  7. 验证安装

    • 确保编译完成且没有错误。
    • C:\msys64\usr\local\ffmpeg 下应该可以找到所有生成的库文件。

通过这些步骤,你应该能够在 Windows 环境中成功编译 FFmpeg。记得根据具体情况调整配置和处理可能的错误。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/9621.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GNU/Linux - 如何使用lsmod和modinfo命令

How to Use the lsmod and modinfo Commands in Linux Linux 内核是模块化的,这意味着可以根据需要添加和删除模块。这就造就了一个轻量级、安全和轻便的内核。它的灵活性让你可以添加和删除你需要的功能,使操作系统符合你的使用情况和偏好。 The Linux …

企业大文件传输之安全数据传输的重要性

企业数据安全性的维护直接关系到企业的市场竞争力乃至其生存的根基。数据的保护不仅涉及到保护企业的商业秘密,也关乎到客户隐私的保护,更触及到国家安全的敏感层面。因此,保障数据在传输过程中的安全,成为了每个企业和组织必须面…

Linux中的fork与进程地址空间

目录 前言 一、进程地址空间 二、fork的值返回 三、高清图链接 总结 前言 在博主的《进程状态解析》一文中,在讨论进程创建时,提到了一个系统调用接口fork,它在使用过程中表现出对于父子进程不一致的返回结果,而且似乎还具有…

python笔记(17)输入输出

一、标准输入与输出简介 Python通过内置的sys模块管理标准输入(stdin)、标准输出(stdout)和标准错误(stderr)。但对大多数简单应用而言,直接使用内置函数就足够了。 二、输入:inpu…

ETL工具kettle(PDI)入门教程,Transform,Mysql->Mysql,Csv->Excel

什么是kettle,kettle的下载,安装和配置:ETL免费工具kettle(PDI),安装和配置-CSDN博客 mysql安装配置:Linux Centos8 Mysql8.3.0安装_linux安装mysql8.3-CSDN博客 1 mysql -> mysql 1.1 mysql CREATE TABLE user_…

618值得入手的平价好物清单,看完再买不吃亏!

即将到来的618年中购物狂欢节,无疑是一年一度的购物盛宴。为了让大家的购物体验更加愉悦和充实,我特地为大家精选了一系列好物。如果你也打算在618尽情购物,那就赶紧收藏这份清单吧! 一、舒适佩戴不伤耳——南卡骨传导耳机Runner…

C补充1—1章1.0—C程序语言设计(许宝文,李志)

二手书到了,好消息,前主人看的很认真,坏消息,只看到这页了 啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊最后几题好难啊啊啊啊啊,再议 目录 1.1 入门 1.2 变量与算数表达式 练习1-3 //打印温度对照表 练习1-4 //摄氏-华氏温…

微软VC++基础插件集合最新版

随着C语言的不断演进,微软不断更新其Visual C(简称VC)工具集,以支持最新的C标准和开发实践。2024年,微软发布了VC基础插件集合的最新版,为C开发者带来了一系列新功能和改进。以下是关于这个最新版插件集合的…

医疗行业如何提升Windows操作系统登录的安全性

医疗行业使用账号和密码登录Windows系统时,可能会遇到一些痛点,这些痛点可能会影响工作效率、数据安全和用户体验。以下是一些主要的痛点: 1. 密码管理复杂性:医疗行业通常涉及大量的敏感数据和隐私信息,因此密码策略…

为什么 Cloudflare 是 2024 年 Vercel 的最佳替代品?生态系统和价格比较

本文探讨了 Vercel 的功能,并与 Cloudflare 生态系统中的类似产品进行了比较。从托管到存储,我们将看到为什么 Cloudflare 可以在 2024 年成为 Vercel 的最佳替代品。 文章目录 介绍什么是 Cloudflare?Cloudflare vs Vercel:托管和…

实战 | 18行代码轻松实现人脸实时检测【附完整代码与源码详解】Opencv、人脸检测

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…

BS架构 数据权限--字段级权限 设计与实现

一、需求场景 1. 销售发货场景 销售出库单上 有 商品名称、发货数量、单价、总金额 等信息。 销售人员 关注 上述所有信息,但 仓管人员 不需要知道 单价、总金额 信息。 2. 配方、工艺保密 场景 配方研发人员 掌握核心配方, 但 交给车间打样、生产时…

深入探索Dockerfile:构建容器化应用的秘密武器

想象一下,您正在开发一款创新的Web应用,您希望能够简化部署流程、确保环境一致性,并且提高开发团队的效率。在这个过程中,Dockerfile 可能是您最强大的工具之一。Dockerfile 是一个简单而又强大的文本文件,它包含了构建…

锚索测力计在岩土工程中的应用

随着现代工程建设的快速发展,岩土工程安全问题日益受到人们的关注。岩土工程中的锚索结构,作为保证工程稳定和安全的关键部分,其性能监测和评估显得尤为重要。近年来,锚索测力计作为一种先进的监测工具,在岩土工程安全…

微信小程序跳转微信管理平台配置的客服及意见页面

<button open-type"contact" bindcontact"handleContact" session-from"sessionFrom">帮助与客服</button> 不需要路径 在当前小程序中会自动进入 open-type"contact" 其他参数不用修改 只修改这个参数对应表单组件 /…

【千帆平台】使用AppBuilder零代码创建应用,然后通过OpenAPI方式调用应用

欢迎来到《小5讲堂》 这是《千帆平台》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 目录 前言创建API密钥调用文档调用说明API服务域名通信协议字符编码公…

Spring AOP浅谈

什么是AOP&#xff1f; AOP是Aspect-Oriented Programming的缩写&#xff0c;是一种面向切面的编程方法。 在AOP中&#xff0c;一个切面是一组可以独立于其他代码执行的功能&#xff0c;如日志记录、安全性检查、事务处理等。这些功能通常被称为"通知"&#xff0c;并…

C++发票识别API 、发票录入

“十二金”工程是我国政府在信息化建设中的重要一步&#xff0c;“金税工程”总称为中国税收管理信息系统&#xff08;CTAIS&#xff09;&#xff0c;是我国电子政务的核心系统之一,是财政的重要环节。十二金”是面向政府办公业务建立的十二个重点信息应用系统&#xff0c;按“…

IP报文在设备间传递的封装过程

IP报文传递过程 1、PC1访问PC2报文传递过程1.1、PC1准备数据请求报文封装1.2、PC1准备ARP请求报文1.3、PC2准备ARP响应报文1.4、PC1完成数据请求报文封装 2、PC1访问PC3报文传递过程2.1、PC1准备数据请求报文封装2.2、PC1准备获取网关MAC地址的ARP请求报文2.3、网关准备ARP响应…

Linux 下载 miniconda

https://repo.anaconda.com/miniconda/ 下载对应版本&#xff1a; wget -c https://repo.anaconda.com/miniconda/Miniconda3-py310_24.3.0-0-Linux-x86_64.sh给下载的文件添加可执行权限 chmod x Miniconda3-py310_24.3.0-0-Linux-x86_64.sh安装 ./Miniconda3-py310_24.3.…