ffmpeg 7.0 + vs2022 +windows编译

2024-05-10 18:04
文章标签 编译 windows ffmpeg 7.0 vs2022

本文主要是介绍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。记得根据具体情况调整配置和处理可能的错误。

这篇关于ffmpeg 7.0 + vs2022 +windows编译的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

基于Python实现一个Windows Tree命令工具

《基于Python实现一个WindowsTree命令工具》今天想要在Windows平台的CMD命令终端窗口中使用像Linux下的tree命令,打印一下目录结构层级树,然而还真有tree命令,但是发现... 目录引言实现代码使用说明可用选项示例用法功能特点添加到环境变量方法一:创建批处理文件并添加到PATH1

Windows的CMD窗口如何查看并杀死nginx进程

《Windows的CMD窗口如何查看并杀死nginx进程》:本文主要介绍Windows的CMD窗口如何查看并杀死nginx进程问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Windows的CMD窗口查看并杀死nginx进程开启nginx查看nginx进程停止nginx服务

Windows 系统下 Nginx 的配置步骤详解

《Windows系统下Nginx的配置步骤详解》Nginx是一款功能强大的软件,在互联网领域有广泛应用,简单来说,它就像一个聪明的交通指挥员,能让网站运行得更高效、更稳定,:本文主要介绍W... 目录一、为什么要用 Nginx二、Windows 系统下 Nginx 的配置步骤1. 下载 Nginx2. 解压

windows系统上如何进行maven安装和配置方式

《windows系统上如何进行maven安装和配置方式》:本文主要介绍windows系统上如何进行maven安装和配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录1. Maven 简介2. maven的下载与安装2.1 下载 Maven2.2 Maven安装2.

IIS 7.0 及更高版本中的 FTP 状态代码

《IIS7.0及更高版本中的FTP状态代码》本文介绍IIS7.0中的FTP状态代码,方便大家在使用iis中发现ftp的问题... 简介尝试使用 FTP 访问运行 Internet Information Services (IIS) 7.0 或更高版本的服务器上的内容时,IIS 将返回指示响应状态的数字代

Python使用FFmpeg实现高效音频格式转换工具

《Python使用FFmpeg实现高效音频格式转换工具》在数字音频处理领域,音频格式转换是一项基础但至关重要的功能,本文主要为大家介绍了Python如何使用FFmpeg实现强大功能的图形化音频转换工具... 目录概述功能详解软件效果展示主界面布局转换过程截图完成提示开发步骤详解1. 环境准备2. 项目功能结

SpringBoot使用ffmpeg实现视频压缩

《SpringBoot使用ffmpeg实现视频压缩》FFmpeg是一个开源的跨平台多媒体处理工具集,用于录制,转换,编辑和流式传输音频和视频,本文将使用ffmpeg实现视频压缩功能,有需要的可以参考... 目录核心功能1.格式转换2.编解码3.音视频处理4.流媒体支持5.滤镜(Filter)安装配置linu

使用Python实现Windows系统垃圾清理

《使用Python实现Windows系统垃圾清理》Windows自带的磁盘清理工具功能有限,无法深度清理各类垃圾文件,所以本文为大家介绍了如何使用Python+PyQt5开发一个Windows系统垃圾... 目录一、开发背景与工具概述1.1 为什么需要专业清理工具1.2 工具设计理念二、工具核心功能解析2.

Windows Server 2025 搭建NPS-Radius服务器的步骤

《WindowsServer2025搭建NPS-Radius服务器的步骤》本文主要介绍了通过微软的NPS角色实现一个Radius服务器,身份验证和证书使用微软ADCS、ADDS,具有一定的参考价... 目录简介示意图什么是 802.1X?核心作用802.1X的组成角色工作流程简述802.1X常见应用802.

windows和Linux安装Jmeter与简单使用方式

《windows和Linux安装Jmeter与简单使用方式》:本文主要介绍windows和Linux安装Jmeter与简单使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Windows和linux安装Jmeter与简单使用一、下载安装包二、JDK安装1.windows设