win10 下编译ffmpeg3.36.tar.gz

所需工具:

  1. win10
  2. ffmpeg3.36.tar.gz。 或其他版本,下载地址:Index of /releases
  3. msys2。 下载地址:http://www.msys2.org
  4. Visual Studio 2017。

1. 安装MSYS

MSYS2像是windows下的一个子系统,它把windows里面的命令进行封装,并穿上了一层linux命令的外衣,使得在msys中可以使用linux命令,但实际执行的是windows的命令。

下载后,按照提示进行安装。我是直接安装在E盘:E:/MSYS2。

1.1)修改msys的镜像源

目标文件为"msys64\etc\pacman.d\mirrorlist.msys",将内容改为:

复制代码
##
## MSYS2 repository mirrorlist
##
 
## Primary
## msys2.org
Server = http://mirrors.ustc.edu.cn/msys2/msys/$arch/
Server = http://repo.msys2.org/msys/$arch
Server = http://downloads.sourceforge.net/project/msys2/REPOS/MSYS2/$arch
Server = http://www2.futureware.at/~nickoe/msys2-mirror/msys/$arch/

然后保存。

1.2)配置msys2的cmd.

使用记事本或Notepad++打开 msys2 安装目录下的 "msys2_shell.cmd " 文件,将里面的 "rem set MSYS2_PATH_TYPE=inherit " 改成 "set MSYS2_PATH_TYPE=inherit",然后点击保存。

1.3)下载编译ffmpeg需要的工具

主要需要:make, gcc, diffutils, yasm, pkg-config, 这四个工具。

双击"msys2_shell.cmd"文件,打开 shell 窗口,在 shell 中输入下面命令:

复制代码
pacman -S make gcc diffutils yasm pkg-config

pacman 是msys下的安装api的工具。

1.4) 修改"E:\Windows Kits\10\Include\10.0.17763.0\um\winsock.h"代码

这应该是安装VS2017时配置的文件夹,大家可以找找自己放在什么位置。用notepad++打开winsock.h, 在首行添加"#include<winsock2.h>",如下:

否则,会报错。

2. 编译ffmpeg

2.1)修改ffmpeg代码

cd 到 ffmpeg 源码目录进行编译。我是把ffmpeg源码文件夹放在了msys里面的home文件夹下,具体路径为:E:\MSYS2\home\wzg16\ffmpeg。

(1)修改"ffmpeg**/config.h**"

用notepad++打开"ffmpeg**/config.h** ",搜索"CC_IDENT",把包含这个字符的行用"//"注释掉,或者把里面的汉字删除, 否则在编译中会报错。

(2)修改 "E:\MSYS2\home\wzg16\ffmpeg\ffprobe.c"

用notepad++打开ffmpeg\ffprobe.c,搜索"CC_IDENT",把包含这个字符的行用"//"注释掉,一共是一行:

复制代码
//print_str("compiler_ident", CC_IDENT); // 我的这一句在2968行
(3)修改 "E:\MSYS2\home\wzg16\ffmpeg\cmdutils.c"

用notepad++打开ffmpeg\cmdutils.c,搜索"CC_IDENT",把包含这个字符的行用"//"注释掉,一共是一行:

复制代码
//av_log(NULL, level, "%sbuilt with %s\n", indent, CC_IDENT);//第1119行
(3)不修改会带来以下错误。

如果以上两行代码不注释,会在编译过程中带来以下error,错误原因是CC_IDENT宏没有被定义。

复制代码
fftools/ffprobe.c(3047): error C2001: 常量中有换行符
...


fftools/cmdutils.c(1119): error C2065: "slib": 未声明的标识符
fftools/cmdutils.c(1119): error C2296: "%": 非法,左操作数包含"char [138]"类型
fftools/cmdutils.c(1119): error C2059: 语法错误:"数字上的错误后缀"
fftools/cmdutils.c(1119): error C2059: 语法错误:"%"
fftools/cmdutils.c(1119): error C2017: 非法的转义序列
fftools/cmdutils.c(1119): error C2001: 常量中有换行符
fftools/cmdutils.c(1150): error C2143: 语法错误: 缺少")"(在"*"的前面)
fftools/cmdutils.c(1150): error C2143: 语法错误: 缺少"{"(在"*"的前面)
...

2.2)打开VS2017的cmd,进入msys

点击电脑的开始菜单,依次找到 "Visual Studio 2017 " -> "x86 Native Tools Command Prompt For VS 2017)"(x86编译出来的库是32位,x64编译出来的是64位的)。

在弹出的窗口中,输入"mys2_shell.cmd"。

复制代码
**********************************************************************
** Visual Studio 2017 Developer Command Prompt v16.6.5
** Copyright (c) 2020 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x86'
 
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community>msys2_shell.cmd

此时会打开一个新的窗口,如下图所示:

2.3)开始编译

编译命令如下:

复制代码
./configure  --toolchain=msvc  --enable-shared --prefix=windows
make -j 12             # -j 12 表示12线程 # 如果不执行步骤2.1,这里会报错。
make install

编译命令中,--prefix=windows,用于指定了编译结果的存放目录在ffmpeg源码文件夹下,创建了一个名为"windows"的文件夹

2.4)编译结果:

编译成功后,如下所示:

  • bin :该目录存放了 dll 和 lib 文件,例如:avcodec.lib、avcodec-58.dll
  • include:该目录存放了头文件,例如:libavcodec/avcodec.h
  • lib:该目录存放了 pkgconfig 文件
  • share:该目录存放了一些示例代码,例如:muxing.c

参考:

【FFmpeg笔记】04-Win10编译ffmpeg4.2.1(For Windows)_win10 安装ffmpeg4.2-CSDN博客

VS2015编译ffmpeg 3.4.2报错"slib": 未声明的标识符_vs2017 编译的ffmpeg "slib": 未声明的标识符-CSDN博客

相关推荐
AI袋鼠帝5 分钟前
Claude4.5+Gemini3 接管电脑桌面,这回是真无敌了..
人工智能·windows·aigc
獨枭1 小时前
Windows 下安装与使用 Miniconda 完整指南
windows
命里有定数2 小时前
保姆级教程:在 Windows (WSL2) 下本地部署 Qwen3-ASR
windows
lucky67076 小时前
Windows 上彻底卸载 Node.js
windows·node.js
编程小白20266 小时前
从 C++ 基础到效率翻倍:Qt 开发环境搭建与Windows 神级快捷键指南
开发语言·c++·windows·qt·学习
凯子坚持 c8 小时前
CANN 性能剖析实战:从原始事件到交互式火焰图
windows·microsoft
开开心心就好8 小时前
发票合并打印工具,多页布局设置实时预览
linux·运维·服务器·windows·pdf·harmonyos·1024程序员节
獨枭8 小时前
PyCharm 跑通 SAM 全流程实战
windows
仙剑魔尊重楼9 小时前
音乐制作电子软件FL Studio2025.2.4.5242中文版新功能介绍
windows·音频·录屏·音乐·fl studio
PHP小志10 小时前
Windows 服务器怎么修改密码和用户名?账户被系统锁定如何解锁
windows