VS2022编译调试FFmpeg

2023-10-26

  1. Git 工具下载,安装直接选择好安装路径,直接下一步到安装完成。
    在这里插入图片描述
  2. 配置好工程目录,msvc为编译生成的目标文件的目录,source为源代码目录
    在这里插入图片描述
  3. 进入source目录,通过Git下载FFmpeg
    git clone https://github.com/ShiftMediaProject/FFmpeg.git

在这里插入图片描述

  1. FFmpeg下载好后,可以打开FFmpeg->SMP->ffmpeg_deps.sln解决方案
    在这里插入图片描述
  2. 下载依赖项,管理员方式执行SMP下的project_get_dependencies.bat
    注:这脚本需要git依赖,你的项目如果不是git拉下来的话只能手动下载了,也有可能下载失败,也需要手动下载,根据ffmpeg_deps.sln解决方案下各个依赖项,依赖项在https://github.com/ShiftMediaProject这个目录下,手动方式就是一个个下载了,比如下载libass,首先找到libass
    在这里插入图片描述
  • 点击libass
    在这里插入图片描述
  • 在source目录下运行git命令行
    在这里插入图片描述
  1. 所有依赖项目下载后,编译ffmpeg还有额外的编译头文件,在msvc目录下,创建如图所示目录
    在这里插入图片描述
    1、下载 opengl 的 glext.h 和 wglext.h 到 " msvc/include/gl/ " 目录下。(下载点 这里
    2、下载 opengl 的 khrplatform.h 到 " msvc/include/KHR/ " 目录下。(下载点 这里
    3、下载 nv-codec-headers 项目的 “include” 文件夹下的内容到 " msvc\include " 目录下。(git 项目点 这里
    4、下载 AMF 项目的 “amf/public/include” 文件夹下的内容到 " msvc/include/AMF/ "目录下。 (git 项目点 这里)

  2. msvc 来编译 ffmpeg 还需要 安装 NASM 才能编译所有的汇编文件。ShiftMediaProject 为编译 ffmpeg 提供的自定义构建项【nasm / yasm】默认 VS是没有支持的,所以需要用第5步同样的方法下载nasm 和 yasm,并安装,否则有些有汇编的工程无法加载
    【nasm】下载地址:https://github.com/ShiftMediaProject/VSNASM.git
    【yasm】下载地址:https://github.com/ShiftMediaProject/VSYASM.git
    安装:nasm与yasm的安装方式完全一样,这里以nasm举例:进入下载好的nasm目录,找到install_script.bat文件,不要直接运行,先 以管理员身份,在预设好 VS 相关变量的脚本环境中 (开发者命令行 / Developer command),运行该 install_script.bat 脚本
    在这里插入图片描述
    执行成功即可,yasm用同样的方式安装。

一切准备就绪,可以打开ffmpeg_deps.sln解决方案开始编译了,编译的过程中,会有编译不通过的两个工程,一个是gnutls项目,一个是libilbc项目
是因为这两个项目的子项目没有自动下载导致,我这个版本是gnutls,libilbc这两个项目有子项目,不同版本可能有不同的项目存在子项目。
这里以gnutls项目为例,通过编译,可以发现gnutls\devel目录下libtasn1目录是空的。
在github上找到这个子项目的地址进行下载即可。
在这里插入图片描述
点击该gnutls的libtasn1这个子项目进入下面页面,点击libtasn1
在这里插入图片描述
就可以找到libtasn1的git地址,通过git clone下载到gnutls/devel目录下即可。
在这里插入图片描述
同样的方法根据编译提示,找到libilbc缺少的依赖子项目下载下来即可。

最后大功告成

在这里插入图片描述

在这里插入图片描述
可以变成调试了,Debug编译ffmpeg生成文件是ffmpegd,调式会提示找不到ffmpeg,这需要做如下配置
在这里插入图片描述
改好之后就可以调试了

在这里插入图片描述
技术参考:
使用 VS2015 编译并调试 ffmpeg:https://www.cnblogs.com/BensonLaur/p/10989115.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VS2022编译调试FFmpeg 的相关文章

随机推荐

  • 基于A*算法自动引导车的路径规划(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 动汽车动力系统复杂 行驶工况多变 能耗管理是其研
  • ajax aftersuccess,Ajax jquery success scope

    问题 I have this ajax call to a doop php function doop var old this siblings old html var new this siblings new val ajax u
  • Java 的 Class 文件格式——解析魔数和版本号

    解析 Java 的 Class 文件格式 解析魔数和版本号 作者 陈跃峰 出自 http blog csdn net mailbomb 熟悉 Java 语言有好几年了 技术也学了一些 现在主要从事 J2ME 技术方面的工作 最近工作不是很忙
  • 小学老师工资多少一个月_教师一个月工资是多少? 全国各地教师工资一览

    教师 被誉为人类灵魂的工程师 一直以来教师工资改革都是民生很关注的问题 据获悉 目前中小学教师基本工资都将得到相应的提高 那么 教师一个月工资是多少呢 下面我们来看看全国各地教师工资一览表 教师一个月工资是多少 教师一个月工资是多少呢 全国
  • Python究竟是个啥?为什么985的学生都在学它?早就该曝光了

    现在网上一搜学Python能做什么 无一例外地全跳出来一堆的专业名词 看的时候虎躯一震 看完之后 依然不知道学会了能干啥 不知道大家是不是也有同样的感受 为了解决大家这种困惑 我今天特意花时间总结了一些学完Python能做的工作 力求用最通
  • 【算法】希尔排序C语言实现

    上一篇文章我们一起学习了直接插入排序 它的原理就是把前i个长度的序列变成有序序列 然后循环迭代 直至整个序列都变为有序的 但是说来说去它还是一个时间复杂度为 n 2 的算法 难道就不能再进一步把时间复杂度降低一阶么 可能有很多同学说快速排序
  • linux笔记-awk详解

    简介 awk是一个强大的文本分析工具 相对于grep的查找 sed的编辑 awk在其对数据分析并生成报告时 显得尤为强大 简单来说awk就是把文件逐行的读入 以空格为默认分隔符将每行切片 切开的部分再进行各种分析处理 awk有3个不同版本
  • 以太坊蜜罐智能合约分析

    0 00 前言 在学习区块链相关知识的过程中 拜读过一篇很好的文章 The phenomenon of smart contract honeypots 作者详细分析了他遇到的三种蜜罐智能合约 并将相关智能合约整理收集到Github项目sm
  • 0402自学web后端之——使用flask-mail发送邮件

    安装 gt gt gt pip3 install flask mail 设置环境变量 gt gt gt export MAIL USERNAME 发件邮箱地址 163 com gt gt gt export MAIL PASSWORD 发件
  • java项目利用launch4j生成可执行exe文件

    一 项目结构说明 参见文章 java项目打成可运行jar包 http mp blog csdn net postedit 79194671 二 操作流程 1 右键项目 gt export gt Runnable JAR File gt Ne
  • Nginx【反向代理负载均衡动静分离】--下

    Nginx 反向代理负载均衡动静分离 下 Nginx 工作机制 参数设置 master worker 机制 示意图 图解 一个master 管理多个worker 一说master worker 机制 争抢机制示意图 图解 一个master
  • 获取时间/时间戳,并比大小

    获取当前时间戳的几种方法 1 System currentTimeMillis 2 Calendar getInstance getTimeInMillis 3 new Date getTime 注 上面的获取时间戳值都是毫秒级的 返回的都
  • 微信公众号发送模板信息报错——invalid credential, access_token is invalid or not latest hints:

    这个大部分原因是access token不正确导致的 这个access token是微信开放文档 公众号 开始开发 获取Access Token下的获取access token获取的 而不是下面的微信网页开发 网页授权中获取access t
  • 等概率抽样——水塘抽样

    等概率抽样 水塘抽样 给出一个数据流 这个数据流的长度很大或者未知 并且对该数据流中数据只能访问一次 且不能使用额外的空间 请写出一个随机选择算法 使得数据流中所有数据被选中的概率相等 从头开始遍历数据 当遍历到第n个数据时 从0到n 1中
  • 使用Wireshark与Burp Suite分析HTTPS协议

    目录 目的 内容 器材 设备 元器件 步骤 1 虚拟机服务器搭建网站 本机访问用Burp Suite抓包获取头信息 2 Wireshark和Burp Suite处理HTTPS的过程与技术实现过程原理 1 Wireshark 2 Burp S
  • Spring Cloud五大组件

    Spring Cloud五大组件 Spring Cloud是分布式微服务架构的一站式解决方案 在Spring Boot基础上能够轻松搭建微服务系统的架构 现有Spring Cloud有两代实现 一代 Spring Cloud Netflix
  • SpringBoot(一)使用itelliJ社区版创建SpringBoot项目

    工欲善其事 必先利其器 要开发SpringBoot项目 首先就是选择一款合适的开发工具 目前市面上有很多优秀的开发工具 例如 IntelliJ IDEA Visual Studio Code 和 Eclipse 等 那么我们该如何选择呢 最
  • 17 Redis缓存更新策略(缓存和数据库更新选择)

    1 先更新数据库 在更新缓存 会有异常 更新完Mysql 发生异常 redis还没有更新 导致redis的是旧数据 下次读取缓存读的是脏数据 2 先删除缓存 在更新数据库 1 缓存已经删了 mysql还在更新中 由于Mysql还在更新中 会
  • java类注释_Java注释,java类注释详解

    一个程序的可读性 关键点就在于注释 下面要给大家讲到的就是Java注释方面的知识 主要会介绍java类注释 类注释一般必须放在所有的 import 语句之后 类定义之前 主要声明该类可以做什么 以及创建者 创建日期 版本和包名等一些信息 下
  • VS2022编译调试FFmpeg

    Git 工具下载 安装直接选择好安装路径 直接下一步到安装完成 配置好工程目录 msvc为编译生成的目标文件的目录 source为源代码目录 进入source目录 通过Git下载FFmpeg git clone https github c