要说Windows下做C/C++开发用哪个IDE最强大

Windows下搭建FFmpeg开发调试环境详细步骤

背景

如果你是FFmpeg的用户,在大多数情况下,你只需要在你的程序中引用FFmpeg的libav*相关头文件,然后在编译阶段链接相关库即可。

而如果你想调试FFmpeg的内部逻辑,或者分析FFmpeg的源码,拥有一个FFmpeg单步调试的环境,往往能让你事半功倍!

要说Windows下C/C++开发的IDE是最强大的,我想我的答案是VisualStudio。

谈如何在Windows下快速搭建FFmpeg VS项目,首先推荐ShiftMediaProject(以下简称SMP)开源项目:SMPGitHub

有关 ShiftMediaProject 的更多信息,您可以直接访问其官网。

我将以VS2017为例。

一步步介绍如何搭建FFmpeg项目进行单步调试

※注意:在此之前,请确保您的笔记本电脑的网络环境可以正常访问GitHub。

一、安装VS2017

先安装VS2017,安装步骤不是本文重点,这里不再赘述

不过需要注意的一点是安装时需要检查C++环境和WindowsSDK8.1

二、安装 YASM 和 NASM

因为FFmpeg的部分源码需要编译支持,所以需要先安装VS版本的YASM/NASM。官方 SMP 团队也很友好地帮助我们做到了这一点:

首先直接下载对应如下两个链接的VSYASM.zip和VSNASM.zip:

下载完成后:

解压VSYASM.zip,右键install_script.bat选择以管理员身份运行,等待安装完成:

解压VSNASM.zip,右键install_script.bat选择以管理员身份运行,等待安装完成:

TL;博士

后面的步骤会很麻烦。经过多次实践,我已经为大家编写了一键部署脚本,可以快速部署项目,可以直接编译成功。

如果不想处理这么复杂的细节,想直接使用一键部署脚本的读者

⏭️可以直接跳转到文末一键部署脚本章节

三、创建正确的目录层次结构

刚开始做SMP项目的时候,一直想知道它的目录层次,编译后找不到输出目录。

多次踩坑c语言头文件下载,结合官方README的说明,一个比较好的目录层次应该是这样的:

- ffmpeg_smp_vs   // 假设你的项目文件夹叫 ffmpeg_smp_vs
- source        // 创建source子文件夹,用于放SMP相关源码
- msvc          // 自动生成,存放SMP编译生成的目标文件等

问:为什么要建立两层目录结构?

A:为了防止生成的文件在源目录中被“污染”,SMP项目将输出目录设置为与源目录同级的msvc目录。

如果直接下载源码到ffmpeg_smp_vs目录下,生成的msvc目录会被移到ffmpeg_smp_vs目录外面,不太美观。

为此,最好将源目录和生成的目录都放在统一的ffmpeg_smp_vs目录中。

四、下载源码及相关依赖

假设您已经在步骤 3 中创建了相应的文件夹

您可以开始下载 SMP 源代码及其相关依赖项

注意:以下操作在WindowsCMD命令行工具中进行

※下载SMP源代码:

cd ffmpeg_smp_vssource
git clone https://github.com/ShiftMediaProject/FFmpeg.git

※运行脚本下载相关依赖库:

cd ffmpeg_smp_vssourceFFmpegSMP
project_get_dependencies.bat /Y

下载的依赖库很多,请耐心等待。如果中间出现错误或中断,请再次执行上一句的最后一个脚本,直到所有依赖库都下载成功。

※下载第三方库的头文件:

AMF 头文件

先获取AMF仓库代码

然后将AMFamfpublicinclude下的所有子文件夹复制到ffmpeg_smp_vsmsvcincludeAMF(如果该目录不存在,请自行创建)

ffnvcodec 头文件

先获取ffnvcodec仓库代码

git clone https://github.com/FFmpeg/nv-codec-headers.git

然后将nv-codec-headersincludeffnvcodec下的所有头文件复制到ffmpeg_smp_vsmsvcincludeffnvcodec(如果目录不存在请自行创建)

OpenGL 头文件

下载以下两个头文件,放在ffmpeg_smp_vsmsvcincludegl下(如果目录不存在,请自行创建)

EGL 头文件

下载下面的头文件,放到ffmpeg_smp_vsmsvcincludeKHR下(如果目录不存在,请自行创建)

五、编译调试

※编译

进入文件夹:ffmpeg_smp_vssourceFFmpegSMP

双击打开ffmpeg_deps.sln

右键单击整个解决方案 -> 单击生成解决方案

当编译耗时较长时,请耐心等待编译完成☕..

如果编译失败,请仔细检查以上步骤,或者给我留言

※调试

因为SMP的默认调试目标路径设置错误(至少截至写这篇文章的时候|2021/12/09),所以我们需要更改ffmpeg/ffprobe/ffplay这三个可执行文件的调试路径,以ffmpeg为例(另外两个改成这样):

在Programs目录中右键ffmpeg->选择属性

将Configuration Properties->Debug->Command line的$(TargetPath)改为:$(OutDir)binx64$(TargetName)$(TargetExt)

以调试ffmpeg为例,设置ffmpeg为启动项目

在ffmpeg.c的main()函数入口处设置断点,按F5开始愉快的调试学习之旅~

VisualStudio的调试方法不是本文重点,请自行搜索

⏭️ 一键部署脚本

为了方便大家快速部署一个可以编译成功的FFmpegVS2017项目,也为了防止在各种配置上浪费时间,我写了一个一键部署脚本供大家使用,前提是你完成了上面的步骤1和1 这样做再走一步。

首先下载下面的仓库:

git clone https://github.com/Suiyek/OneKeySetupSMP.git

创建你的项目目录,例如 D:Codeffmpeg_smp_vs

将 init_smp_proj.bat 复制到您的项目目录

双击运行脚本并等待它完成

好的c语言头文件下载,只需参考第 5 步即可将其取出。

Windows下搭建FFmpeg开发调试环境的文章到此为止。更多相关Windows FFmpeg环境搭建内容请搜索编程宝库原创文章,希望以后多多支持编程宝库!

下一节:探索 C++ 函数模板和类模板 C 编程技术

C++语言完全继承了C语言的标准库,其中包含丰富的系统函数,如输入/输出函数、数学函数、字符串处理函数、动态内存分配函数等。此外,C++ 语言还减少了一些新的库。我们将这个 C++ 语言的新库称为 C++ 标准库。…

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 网站程序 要说Windows下做C/C++开发用哪个IDE最强大 https://www.wkzy.net/game/8233.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务