msys2 + msvc build ffmpeg

本文指导如何在msys2中安装英文版MSVC编译器,解决中文乱码问题,包括设置环境变量、配置vcvarsall.bat和使用--toolchain=msvc选项进行ffmpeg编译。
  1. 安装 msys2
  2. 安装英文版本的 MSVC 编译器(中文版比较多乱码,编译时会出现错误)
    1. MS 官网:https://visualstudio.microsoft.com/zh-hans/downloads/
    2. 下载:Visual Studio 2022 生成工具
    3. 运行,安装时选择 "单个组件->编译工具、生成工具和运行时->MSVC vxxx (选最新版)","语言包"里面,勾选"英文",简体中文取消勾选
    4. 自行选择安装位置
  3. 选择前面安装的英文版 MSVC 编译器,设置环境变量,打开 msys2
    1. 在 cmd.exe 中(powershell 不行),运行(换成自己对应的脚本路径):
    2. "D:\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" x64
    3. 在同一个 cmd 窗口中,打开 msys2,直接输入 exe 完整路径即可:D:\msys64\mingw64.exe
    4. 在打开的 msys2 窗口中,会继承前面设定好的 MSVC 环境变量,可以用 "which cl","which link" 来确认编译器路径是否正确
    5. msys2 自己也有一个 link.exe ,把 msys2 自己的 link.exe 名字改掉,确保可以调用到 MSVC 的 link.exe
  4. msys2 窗口中,进入 ffmpeg source code 目录中,config 时多加上 "--toolchain=msvc" 的选项即可,其他的步骤和 mingw 编译时一样(有用到三方 lib 时,要选择 MSVC 编译的三方方库)
    1. export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/e/ffmpeg/msvc_lib/lib/pkgconfig
      ./configure --toolchain=msvc --enable-shared --enable-ffnvcodec --enable-nvdec --enable-nvenc
  5. 1

### 构建FFmpeg使用MSVC编译器于MSYS2环境 #### 准备工作 安装并设置好MSYS2环境是必要的前提条件。通过访问官方网站获取最新版本的MSYS2进行下载和安装[^2]。 #### 配置开发工具链 为了能够在MSYS2环境下利用Microsoft Visual C++ (MSVC) 编译器来构建FFmpeg, 需要完成一系列准备工作: - 更新系统包至最新状态,打开MSYS2 MinGW 64-bit终端执行如下命令: ```bash pacman -Syu --noconfirm ``` - 安装基本的构建工具集以及用于支持Visual Studio集成的相关组件: ```bash pacman -S --needed base-devel mingw-w64-x86_64-toolchain mingw-w64-x86_64-cmake git ``` 此过程会自动拉取所需的依赖项,并准备好后续操作的基础架构[^1]。 #### 获取源码与外部库 从官方仓库克隆最新的FFmpeg源代码副本到本地机器上: ```bash git clone https://github.com/FFmpeg/FFmpeg.git ffmpeg-source && cd ffmpeg-source ``` 对于希望加入额外功能或优化性能的情况,则还需要单独编译一些第三方编码解码器和其他辅助库(比如x264,x265,lame等),这一步骤并非强制性的,取决于具体需求而定[^4]。 #### 设置交叉编译参数 创建适合当前系统的配置文件`config.mak`, 或者直接在命令行指定相应的选项给`./configure`脚本,确保指定了正确的宿主机平台(`--target-os=mingw32`) 和CC变量指向cl.exe路径以便启用MSVC作为C/C++编译器[^3]: ```bash export PKG_CONFIG_PATH=/path/to/libs/pkgconfig ./configure \ --toolchain=msvc \ --enable-shared \ --disable-static \ --prefix=$(pwd)/build-output \ --extra-cflags="-MD" \ --arch=x86_64 \ --target-os=mingw32 ``` 请注意替换上述命令中的`/path/to/libs/pkgconfig`为你实际存放已编译静态链接库的位置。 #### 执行编译流程 一旦所有的前期准备都已完成之后,就可以正式开始编译过程了。考虑到整个项目规模较大,在某些情况下可能会消耗较多时间,请耐心等待直至结束: ```bash ninja -j$(nproc) ``` 或者如果未安装Ninja也可以继续沿用传统的Makefile方式: ```bash make -j$(nproc) ``` 最后不要忘记将生成的目标文件复制到预期目录内: ```bash make install ``` 这样就成功地基于MSYS2环境配合MSVC完成了FFmpeg项目的自定义化组装任务。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值