如何在WIN10下使用VS2019编译FFMPEG库文件以及FFPLAY.EXE、FFMPEG.EXE和FFPROB.EXE

VS下搭建FFmpeg开发环境 目录1.下载ffmpeg2.创建一个VS控制台项目3.配置VS4.测试环境 1.下载ffmpeg 进入 ffmpeg下载官网 下载 解压之后就会看见include文件夹,lib文件夹,bin文件夹(里面是dll文件) 2.创建一个VS控制台项目 将下载的include文件夹,lib文件夹,和bin文件夹下的所有dll文件复制到项目文件夹下 3.配置VS • 打开属性面板 解决方案资源管理器->右键单击项目->属性 • 头文件配置 配置属性->C/C+±>常规->附加包含 阅读详情

如何在win10下使用vs2019编译FFMpeg库文件以及ffplay.exe、ffmpeg.exe和ffprob.exe

简单介绍

这里在win10的64位系统中编译了最新的ffmpeg的库文件及它自带的工具ffplay、ffmpeg和ffprob程序,代码全部采用最新版本。这样编译后我们可以使用vs2019的IDE下直接进行调试ffmpeg工具软件,使学习ffmpeg的架构及音视频播放器原理更加容易。官方指导文档可参看Platform Specific Information页面。

方法步骤

  1. 安装VS2019

首先进入VS官网下载 Visual Studio Tools - 免费安装 Windows、Mac、Linux 下载VS2019程序文件,执行安装程序进行安装。安装后可以得到msvc的交叉编译环境,该toolchain用于在msys2下编译ffmpeg。

以社区版VS2019为例,下载后会得到文件vs_community.exe,如果想进行离线安装需使用命令行运行vs_community.exe --layout c:\vslayout --lang zh-CN,基中layout参数后为要下载安装包的放置文件夹,lang参数后为要下载程序的语言版本,下载完成后进入设置的安装包文件夹下运行安装,如c:\vslayout\vs_community.exe。

  1. 安装msys2

在MSYS2上下载msys2,安照网站上的步骤安装完成。安装路径最好不要有中文或空格,避免以后使用出现编码问题。安装后运行安装目录的msys2_shell.cmd,输入指令,其中#号为注释可不添:

 -Syu

#更新核心依赖包

pacman -Su

#通过pkgconf安装通用msys2的 packages软件包

pacman -S make pkgconf diffutils

#安装mingw的packages软件包和toolchains工具组件

# 下面这个是64位版本

# pacman -S mingw-w64-x86_64-nasm mingw-w64-x86_64-gcc mingw-w64-x86_64-SDL2

# 下面这个是32位版本

pacman -S mingw-w64-i686-nasm mingw-w64-i686-gcc mingw-w64-i686-SDL2

  1. 下载ffmpeg源码及SDL(ffplay是基于它显示的)库文件

在http://ffmpeg.org/download.html上下载ffmpeg源码。解压的ffmpeg源码文件夹放置msys2目录下的home文件夹中。

在http://www.libsdl.org/download-2.0.php下载SDL2开发用库文件。下载后解压待用。

SDL2的目录结构,其中dll和lib在lib文件夹中,头文件在include文件夹中,编译ffplay时需要。

  1. 启动msys2 编译环境

进入msys2安装路径,在其中创建msys_vs2019.bat批处理文件。编辑文件内容:

set MSYS2_PATH_TYPE=inherit

call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars32.bat"

msys2_shell.cmd -mingw64

其中call后面为自己的vs安装路径,如果想编译64位库需要把vcvars32.bat改为vcvars64.bat文件。

在msys2安装路径找到msys2\usr\bin\link.exe文件改下文件名,因为会和vc的link.exe重名。完成后双击msys_vs2019.bat启动msys2。

如果编译器显示乱码在msys2环境右键点击options设置下text的编码为gbk与window系统编码保持一致。

  1. 使ffmpeg可使用x264编码

进入x264, the best H.264/AVC encoder - VideoLAN 下载x264编码源码。

把解压的x264文件夹放至msys2的home目录中,启动后使用cd ../x264命令进入文件夹。

gcc 编译libx264 (.a .dll)

运行mingw32.exe

开始设置编译方式:

./configure --prefix=./vs2019_x86_build --host=mingw32 --enable-shared --enable-static --extra-ldflags=-Wl,--output-def=libx264.def

参数说明:

--enable-static 编译静态库

--enable-shared 编译动态库

--extra-ldflags=-Wl,--output-def=libx264.def 生成def文件

--host=mingw32 指定编译器,该项必填

--prefix=./vs2019_x86_build 生成文件位置

执行编译命令

make -j4

参数说明:j4为使用4核处理,该参数可不写将使用默认方式编译

编译完成后执行最后的生成

make install

以上编译完成后会生成def、 dll及.a文件。

#复制def文件至输出lib文件夹中

cp ./libx264.def ./vs2019_x86_build/lib/

#进入lib文件夹

cd vs2019_x86_build/lib/

#若要生成64位lib文件则输入如下命令:

#lib /machine:X64 /def:libx264.def

#若要生成32位lib文件则输入如下命令:

lib /machine:i386 /def:libx264.def

执行后得到libx264.lib,然后将vs2019_x86_build/bin文件夹中的libx264-XXX.dll改名或者复制一份为libx264.dll。

msvc编译libx264(.lib .dll)

在msys2中输入代码进行编译,输入代码设置编译:

CC=cl ./configure --enable-static --enable-shared --prefix=./vs2019_x86_build

参数说明:CC=cl 使用VS方式编译

开始编译

make -j4

安装编译

make install

要用生成的lib编译ffmpeg要使用动态x264库,需要将vs2019_x86_build/lib中的libx264.dll.lib改名为libx264.lib,本身的静态的libx264.lib可改名、删掉或放置其它地方。

  1. 编译ffmpeg的静态库和动态库

使用msys2进入ffmpe源码目录,我放在msys2的home中ffmpeg文件夹中进入指令如下:

cd ../ffmpeg

开始设置编译方式:

./configure --enable-shared --enable-static --toolchain=msvc --prefix=./vs2019_x32 --enable-postproc --enable-gpl --enable-avresample --enable-libx264 --extra-cflags=-I/home/x264/vs2019_x86_build/include --extra-ldflags=-LIBPATH:/home/x264/vs2019_x86_build/lib

参数说明:

--toolchain=msvc 指定VS为工具组件

-enable-postproc --enable-gpl --enable-avresample 需要集成的功能

--enable-libx264 集成h264编码

--extra-cflags=-I/home/x264/vs2019_x86_build/include 指定h264头文件位置

--extra-ldflags=-LIBPATH:/home/x264/vs2019_x86_build/lib 指定h264库文件位置

该命令执行会有一些等待时间,过会后将会出现配置过程数据显示,直到全部配置完成。

完成后查看ffmpeg\config.h和ffmpeg\ffbuild\config.mak这两个文件编码是否为utf8,如果不是要对其转换成utf8编码。

转换完成保存后执行编译命令

make -j4

编译完成后执行最后的生成

make install

全部执行完成后进入输出指定文件夹,这里是vs2019_x32,可以看到如下文件,这些就是编译好的全部ffmpeg的静态库和动态库。

其中bin里面为lib和dll文件,lib文件夹中是def文件,include文件夹为头文件,share是一些预设和示例。

  1. 使用VS2019编译ffplay

打开vs2019创建新的空项目

把ffmpeg源码中的config.h文件和fftools文件夹中的ffplay.c,cmdutils.c,cmdutils.h三个文件都复制到到vs新建项目中,修改config.h文件编码为GBK编码并在其中有中文的地方前加上u8符号,保证显示不会乱码。

添上以上四个文件至VS创建的ffplay项目中。

完成后把ffmpeg编译好的库和SDL2的库头文件及库文件目录添加进项目。

拷贝ffmpeg和sdl中的所有dll文件至项目路径下

然后把所有的依赖项lib配置进项目。

项目需保持Unicode字符集

常规SDL检查改为否

屏蔽两个出错的头文件

打包编译即可完成。

添加要使用的命令参数,便可开始运行跟踪调试。

  1. 使用VS2019编译ffprobe

仿照编译ffplay的方法,使用vs2019创建一个空的项目,加入ffmpeg源码中的config.h及fftools目录下的cmdutilsc,cmdutils.h,ffprobe.c这四个文件。设置头文件目录及lib目录,加入依赖lib库文件。具体方法参照ffplay进行设置,这里不需要SDL2库了,可以去除,其它设置都是一样的。

屏蔽掉报错的头文件,设置config.h线程HAVE_THREADS值从1改为0。保存后编译即可通过。

  1. 使用VS2019编译ffmpeg

仿照编译ffprobe的方法,创建一个空的项目,按之前方法设置项目属性,最后加入ffmpeg源码中的config.h和fftools目录下的cmdutilsc,cmdutils.h,ffmpeg.c,ffmpeg.h,ffmpeg_filter.c,ffmpeg_hw.c,ffmpeg_opt.c以及ffmpeg源码中目录下的compat\atomics\win32\stdatomic.h,共九个文件。

config.h和cmdutils.h这两个文件和ffprobe一样的修改方式。

打开ffmpeg.h屏蔽线程头文件。

接下来修改ffmpeg.c文件,首先打开文件,屏蔽指定头文件

修改本地加载stdatomic.h,把<>符号改为””号。

然后在这里加入如下代码

具体代码可进入对应的头文件中找到。

修改完成后进行编译,成功后就可以使用了。

因集成了x264编码,需要将x264.dll文件也放进来。

FFmpeg和vs2022开发环境配置 FFmpeg和VS2022配置开发环境 阅读详情

相关推荐

ffprobe用法详解

本文描述了FFmpeg软件包中的ffprobe程序的用法。

音视频图形编程学习乐园 2916

音视频开发五:visual studio集成使用FFmpeg

windows环境下 visual studio使用FFmpeg

qq_38056514的博客 3012

【深度解析】信息素养提升实践活动(附:历年获奖作品分析)

全国师生信息素养提升实践活动是由教育部教育技术与资源发展中心(中央电化教育馆)主办,面向全国师生的一项信息化交流展示活动。

m0_74417957的博客 9649

用 Visual Studio 2019 编译 FFmpeg 简单教程

需要的东西: ●Visual Studio 2019 这个自行解决吧,本人用的是社区版 ●MSYS 环境,去 https://www.msys2.org/ 下载 本人下载的是【msys2-x86_64-20210725.exe】 ● yasm.exe,去http://yasm.tortall.net/Download.html 下载 本人下载的是【yasm-1.3.0-win64.exe】 ● FFmpeg源码,去http://ffmpeg.org/download....

fly4free的专栏 6362

从零开始:手把手教你规划与部署华为FusionCompute虚拟化平台(含网络规划避坑指南)

本文详细介绍了华为FusionCompute虚拟化平台的规划与部署流程,特别针对网络规划中的常见问题提供了避坑指南。从硬件软件清单检查、网络平面配置到VRM部署方案选择,帮助用户高效完成部署并优化性能,适用于云计算环境中的虚拟化平台搭建。

weixin_28693447的博客 243

车规级非易失存储选型指南:从AEC-Q100到ISO 26262的可靠性设计

非易失存储器是电子系统中负责长期保存关键数据与代码的核心组件,其可靠性直接决定了系统的长期稳定运行能力。在汽车电子领域,这一要求被提升到了极致,必须满足严苛的车规级标准。从原理上看,存储器的数据保持能力、擦写寿命等关键参数在高温、振动等恶劣环境下会急剧衰减,因此需要专门的设计与验证。其技术价值在于保障车辆全生命周期的功能安全与数据完整性,避免因存储失效导致的安全隐患或频繁维护。应用场景涵盖从发动机控制单元、自动驾驶域控制器到智能座舱的各类电子控制单元。本文聚焦于车规级非易失存储的选型,深入解析AEC-Q10

weixin_30938149的博客 458

使用vs2019编译ffmpeg

vs2019编译ffmpeg

xieaoa的博客 1223

别再让 AI 瞎写 SAP 代码了!这套 Claude Code Skill 的验证机制才是关键

本文深入解析了专为SAP CAP开发设计的AI辅助工具sap-cap-capire的技术架构。该工具采用四层设计:协议层集成MCP和LSP实现实时模型访问与语法检查;智能层通过4个专业化Agent(数据建模、服务开发等)分工协作;验证层确保代码质量;知识层存储文档模板。这种工程化设计解决了通用AI在CAP开发中面临的上下文不足、专业性缺失和代码质量保证等核心问题,通过本地化服务和实时反馈机制显著提升了开发效率。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 882

使用Visual Studio编译ffmpeg

1. 如果libass项目里面的.asm文件编译失败,删除前面环境变量里面配置的YASMPATH和NASMPATH,直接把yasm.exe和nasm.exe拷贝到C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC里面(具体看自己的vs的安装路径),然后重新编译。2. libavfilter项目属性里面,增加FRIBIDI_LIB_STATIC宏,如下图所示,否则会提示_imp_xxx函数找不到。

NaiBei的专栏 1009

Mediatek NeuroPilot Yolov8量化

【代码】Mediatek NeuroPilot Yolov8模型转化。

sdrgtywretyeruet的专栏 345

改进的主动轮廓模型实现图像分割

主动轮廓模型的优点在于可以自适应地调整轮廓形状和位置,适用于不同形状和大小的目标分割。改进的主动轮廓模型是一种有效的图像分割方法,能够适应不同场景下的图像分割需求。改进的主动轮廓模型涉及到许多参数,如模型参数、分割参数、权值系数等,这些参数的调整也会直接影响到分割结果。本文将介绍一个改进的主动轮廓模型,该模型可以实现对图像进行有效的分割。改进的主动轮廓模型是在传统的主动轮廓模型基础上进行的改进。和传统的模型相比,改进的主动轮廓模型加入了外部力和内部力,能够更好地适应复杂场景下的图像分割。

qq_39605374的博客 294

vs2019编译ffmpeg源码为静态库动态库【完整步骤、亲测可行】

  ffmpeg大概从两年前版本开始,不再提供编译好的lib,dll,需要开发者自己编译,在linux下编译ffmpeg可能相对简单,windows稍微复杂点,很多文章介绍使用msys2编译,但是绝大多数都是无法正确编译出lib, 而且也只是加上了x264, 然而ffmpeg支持的依赖库很多,用命令行,一个命令写错就编译失败了,本篇博客介绍如何使用vs2019编译最新的ffmpeg源码,可以编译为静态库、动态库,支持x64和win32版本,例如下面是我的vs2019 编译结果: lib库路径   我的编

琅嬛福地 1万+

AI驱动的客户终身价值分析:深入理解公司的收入质量

客户终身价值(Customer Lifetime Value, CLV)是衡量客户在整个生命周期内能为企业带来多少利润的重要指标。传统的CLV计算方法往往过于简化,无法准确反映复杂的客户行为和收入模式。本文旨在介绍如何利用人工智能技术,特别是机器学习方法,构建更精确的CLV预测模型,从而帮助企业深入理解其收入质量。CLV的基本概念和商业意义传统CLV计算方法的局限性基于机器学习的CLV预测方法特征工程和模型选择策略实际应用案例和Python实现首先介绍CLV的基本概念和商业背景。

AI云原生与云计算技术学院 477

FFmpeg在VS2019下的编译

今天无意中在gayhub发现个牛逼工程,全VS工程编译FFMPEG库,包括依赖库全是VS生成的,无需Mingw等Linux环境。 简单记录下过程,以防将来重装系统等情况,备忘。 GitHub - ShiftMediaProject/FFmpeg: Unofficial FFmpeg with added custom native Visual Studio project build tools. FFmpeg: A complete, cross-platform solution to recor

wanfengnianhua的专栏 1722

43、基于机器学习的GNSS信号质量监测方法

本文提出了一种基于支持向量机(SVM)的GNSS信号质量监测方法,旨在有效检测邪恶波形(EWF)威胁并抑制多径干扰对导航精度的影响。通过构建包含现场采集与合成数据的数据集,结合11个相关器测量值、链路预算、仰角和方位角等特征,采用RBF核函数的SVM模型进行分类。研究评估了不同平滑时间窗口对漏检率和误报率的影响,结果表明在约35-40秒平滑时间下性能趋于稳定,并可通过多数投票机制进一步优化检测性能。该方案适用于星载GNSS接收器,在计算资源受限条件下实现了高可靠性与低完整性风险的平衡。

yyy34的博客 188

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【FFmpeg】介绍+安装+VisualStudio配置FFMpeg库

介绍了FFMpeg在windows和ubuntu下的安装,已经如何在Visual studio里配置FFMpeg库,涉及到静态库动态库环境变量等的配置,图文并茂;

m0_54984588的博客 2137

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

ffmpeg常使用的命令

它的作用是将空输入(即空文件)传递给某个命令,以确保命令不会等待输入而直接执行。例如,如果你在使用ffmpeg命令进行批量处理,而某些情况下ffmpeg可能会尝试等待输入(比如需要输入确认是否覆盖文件等),但你的脚本并不希望等待用户输入,综合起来,这条命令的作用是通过FFprobe工具分析MP3音频文件MP3.mp3,并仅输出该文件的持续时长信息,而不显示其他任何信息。是一个特殊的设备文件,它相当于一个黑洞,所有写入它的数据都会被丢弃,读取它则会得到空。在ffmpeg等命令中,有时会用到。

weixin_42831564的博客 773

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

vs配置ffmpeg

继前文windows安装ffmpeg之后,我们不仅要考虑怎么在电脑上使用命令来操作ffmpeg,还需要考虑如何在程序编写中使用ffmpeg中的功能。 1.先把需要的头文件、链接库等下载了 这里需要注意,我们这次下载的版本是带有shared的那一项,这个版本不仅包含了能允许pc操作ffmpeg的文件,还包含了供程序使用的各种文件。 从上图中可见,bin,include,lib是我们需要的文件夹。 2.新建c++工程 不多说,先新建一个全新的c++工程,这里用的开发工具是vs2017...

师范大学生的博客 4227

ffmpeg在visual studio2019上配置及验证

1.下载ffmpeg编译好的Windows版本 https://ffmpeg.zeranoe.com/builds/,下载windows版本的static、share、dev三个文件,之后解压。 2.配置visual studio 2.1 创建控制台应用程序,c++的。 2.2 配置visual studio 将第一步下载的dev目录下的lib、include复制到项目目录 ...

liupenglove的专栏 2384

VS配置FFmpeg踩坑后的成功版

VS配置FFmpeg

wwwrrreeee的博客 753

Windows10 使用MSYS2和VS2019编译FFmpeg源代码-测试通过

windows系统使用MSYS2和VS2019编译FFmpeg源代码 编译总结过程,编程经验

C++ 开发者的博客 6196

2.1 Windows VS2019编译FFmpeg 4.4.1

在 Visual Studio 2019 中编译 x264、x265、fdk-aac、lame 和 FFmpeg 需要在 Windows 环境下搭建一个类 Linux 的编译环境,因为这些库主要在 Linux 下开发,源码与 MSVC++ 不完全兼容,基于 MSYS2 和 MinGW 的工具链,并结合 Visual Studio 2019 的编译器(cl.exe)。要安装的组件:下载地址:msys2-installer启动MSYS2: 更换国内源: 参考地址:https://mirrors.ustc.edu

卖猪肉的痴汉 1494

VS配置FFMPEG(附编译好的库和inttypes.h及stdint.h)

在VS上配置ffmpeg时,需要对ffmpeg进行编译,比较麻烦。这里直接给出编译好的库,来自该博客,版本为ffmpeg4.2.1,有32位和64的。 1. VS配置说明 编译测试代码的过程中可能会遇到缺少inttypes.h和stdint.h,配置方法和相关文件可在下面的百度网盘中下载: 链接:https://pan.baidu.com/s/1-1IQKpCLxpKNA56ZkFPq5g 提取码:5429 2. 测试代码 main.cpp // TEST CODE #ifdef __cplusplus e

qq_42617790的博客 1249

FFmpeg - Windows下使用MSYS2和VS编译FFmpeg

Windows下使用MSYS2和VS编译FFmpeg

搬砖 4477

VS2022配置FFMPEG库基础教程

FFmpeg诞生于2000年,由法国工程师Fabrice Bellard主导开发,其名称源自"Fast Forward MPEG",初期定位为多媒体编解码工具。2004年后由Michael Niedermayer接任维护,逐步发展成为包含音视频采集、格式转换、流媒体处理等完整功能的开源项目。经过25年迭代,当前最新7.x版本已支持H.266/VVC、AV1等新一代编码标准,在全球开发者社区贡献下形成包含7大核心库的生态系统。

深图智能工作室 2505

ffmpeg分析节目信息

ffmpeg分析节目信息,可以在windows下使用ffprobe分析网络流信息。使用方法:ffprob -i "网络流地址"这样就可以分析到节目名称,节目数量,音视频信息等。但经过测试发现ffprobe无法解析全加密流,但是可以解析多节目流中有部分加密的节目。通过查看源代码发现程序一直死循环再获取数据上。想解析全加密流就要另想办法了 ...

liu13654096760的博客 357
上一篇: msys2常用软件安装指令说明
下一篇: CImage对象素直接操作方法
橙枫L
博客等级 码龄19年 172粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值