windows下编译ffmpeg6.0

本文介绍了在Windows10系统中,使用VisualStudio2022和MSYS2环境编译FFmpeg6.0的完整过程,包括下载安装软件、配置环境、修改源码以解决编译错误,以及执行make和makeinstall的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境:win10

准备

1、官网下载安装软件vs2022msys2,如果无法访问msys2网址,可以从这里下载,安装步骤不再赘述
2、下载ffmpeg源码,我用的是ffmpeg6.0版本
在这里插入图片描述

下面开始编译

1、首先,进入MSYS2的安装目录,在该目录下打开 msys2_shell.cmd 文件,将该文件第 17 行代码的注释打开,即去掉 rem 关键字,其他行不变,如下所示:

@echo off
setlocal EnableDelayedExpansion

set "WD=%__CD__%"
if NOT EXIST "%WD%msys-2.0.dll" set "WD=%~dp0usr\bin\"
set "LOGINSHELL=bash"
set /a msys2_shiftCounter=0

rem To activate windows native symlinks uncomment next line
rem set MSYS=winsymlinks:nativestrict

rem Set debugging program for errors
rem set MSYS=error_start:%WD%../../mingw64/bin/qtcreator.exe^|-debug^|^<process-id^>

rem To export full current PATH from environment into MSYS2 use '-use-full-path' parameter
rem or uncomment next line
set MSYS2_PATH_TYPE=inherit
***
***

之所以要打开该注释,是为了让MSYS2可以继承Windows控制台的环境变量。

2、点击windows开始按钮,输入x64 Native Tools 搜索,点击x64 Native Tools Command Prompt for VS 2022打开命令行窗口
在这里插入图片描述
3、接下来修改msys2安装包源,打开目录msys64\etc\pacman.d,
mirrorlist.msys 文件开头增加
Server = http://mirrors.ustc.edu.cn/msys2/msys/$arch

mirrorlist.mingw64 文件开头增加
Server = http://mirrors.ustc.edu.cn/msys2/mingw/x86_64

mirrorlist.mingw32 文件开头增加
Server = http://mirrors.ustc.edu.cn/msys2/mingw/i686

3、在此窗口命令行下进去msys2目录,启动msys2

# 进入到msys2安装目录
cd D:\MSYS64

# 启动msys2命令行窗口
msys2_shell.cmd

启动后如下所示,接下来的步骤均在msys2命令行窗口执行
在这里插入图片描述

4、安装必要的编译工具

pacman -S diffutils make pkg-config yasm

5、之后进入ffmpeg源码目录,执行configure脚本

./configure --prefix=../build --enable-gpl --enable-nonfree --enable-shared --disable-ffprobe --toolchain=msvc
  • prefix表示编译生成目录,这里用的相对地址
  • 编译使用msvc编译工具,编译时不生成 ffprobe和ffplay程序

6、执行完上述命令会生成makefile文件,接下来执行如下命令:

make -j4 && make install
  • 编译过程可能会出现如下错误
...... error C2065: “slib”: 未声明的标识符
...... error C2296: “%”: 非法,左操作数包含“char [138]”类型

这是因为在Windows下无法识别 CC_IDENT,注释掉ffmpeg-6.0\fftools\opt_common.c第206行,如下所示

static void print_program_info(int flags, int level)
{
    const char *indent = flags & INDENT? "  " : "";

    av_log(NULL, level, "%s version " FFMPEG_VERSION, program_name);
    if (flags & SHOW_COPYRIGHT)
        av_log(NULL, level, " Copyright (c) %d-%d the FFmpeg developers",
               program_birth_year, CONFIG_THIS_YEAR);
    av_log(NULL, level, "\n");
    //av_log(NULL, level, "%sbuilt with %s\n", indent, CC_IDENT);

    av_log(NULL, level, "%sconfiguration: " FFMPEG_CONFIGURATION "\n", indent);
}

保存文件再此编译即可

7、等待编译完成,查看build/bin目录:
在这里插入图片描述
perfect!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值