创建ffmpeg vs2019工程

news2025/1/21 0:55:14

0 写在前面

本文主要参考链接:https://www.cnblogs.com/suiyek/p/15669562.html

感谢作者的付出;

1 目录结构

2 下载yasm和nasm

如果自己在安装VS2019等IDE的时候已经安装了它们,则不用再单独进行安装,比如我这边已经安装了,路径为:C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC,将这个路径加入到系统环境变量Path中即可;

3 下载第三方头文件

3.1 下载AMF头文件

先获得AMF仓库代码:

git clone https://github.com/GPUOpen-LibrariesAndSDKs/AMF.git

然后把 AMF\amf\public\include\ 下的所有子文件夹复制到 ffmpeg_msvc\msvc\include\AMF 下(目录不存在的话请自行创建)。

3.2 下载ffnvcodec头文件

先获得ffnvcodec仓库代码:

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

然后把nv-codec-headers\include\ffnvcodec\ 下的所有头文件复制到 ffmpeg_msvc\msvc\include\ffnvcodec 下(目录不存在的话请自行创建)。

在后面编译ffmpeg_deps.sln工程的时出现问题:

经过对https://github.com/FFmpeg/nv-codec-headers仓库进行分析,由于自己使用的master分支,所以nvEncodeAPI.h中的内容是不全的,需要将其切换到origin/sdk/12.0分支:

git checkout --track origin/sdk/12.0

3.3 下载openGL头文件

将链接Index of /OpenGL/api/GL下的glext.hwglext.h执行另存为操作,将它们保存在ffmpeg_msvc\msvc\include\gl下(目录不存在的话请自行创建)。

3.4 下载EGL头文件

将链接Index of /EGL/api/KHR下的khrplatform.h头文件执行另存为操作,将它们保存在ffmpeg_msvc\msvc\include\KHR下(目录不存在的话请自行创建)。

4 下载源码并安装依赖

4.1 下载源码

cd ffmpeg_msvc\smp_src

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

这个仓库中实际上就已经包含了ffmpeg的源码,具体如下:

可以通过上图中的Changelog可以查看当前ffmpeg的修改内容,当编译完ffmpeg后,可以使用ffmpeg -version来查看ffmpeg到底使用的是哪一个版本。

4.2 安装依赖

在cmd中运行E:\ffmpeg_msvc\smp_src\FFmpeg\SMP\project_get_dependencies.bat脚本,当执行完该脚本后,也会在smp_src的目录中下载编译ffmpeg所依赖的第三方的代码,具体如下:

5 编译与调试

5.1 编译

进入文件夹:E:\ffmpeg_msvc\smp_src\FFmpeg\SMP,打开ffmpeg_deps.sln工程,共47个项目,具体如下:

编译结果:

查看ffmpeg的版本:

可以尝试编译不同的版本:

5.2 调试

直接设置为启动项目即可;

参考链接:

[1]https://www.cnblogs.com/suiyek/p/15669562.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/951043.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VScode 国内下载源 以及 nvm版本控制器下载与使用

VScode 国内下载源 进入官网 https://code.visualstudio.com/ 点击下载 复制下载链接到新的浏览器标签 将地址中的/stable前的az764295.vo.msecnd.net换成vscode.cdn.azure.cn,再回车就会直接在下载列表啦。 参考大神博客 2.使用nvm 对 node 和npm进行版本控制…

【混合时变参数系统参数估计算法】使用范数总和正则化和期望最大化的混合时变参数系统参数估计算法(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

【洁洁送书第一期】Python高并发与高性能编程: 原理与实践

这里写目录标题 Python高并发、高性能解决问题书本介绍关于作者直播预告 Python高并发、高性能 Python成为时下技术革新的弄潮儿,全民Python的发展趋势让人们不再满足于简单地运行Python程序,逐步探索其更为广泛的日常应用和高性能设计。 以ChatGPT为代…

LeetCode-53-最大子数组和-贪心算法

贪心算法理论基础: 局部最优推全局最优 贪心无套路~ 没有什么规律~ 重点:每个阶段的局部最优是什么? 题目描述: 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素&#…

Running transaction check,yum卡在这个地方不动了

问题:运行yum update卡在这个地方不动 解决办法:运行下面的命令 # /bin/rm /var/lib/rpm/__db.* # cd /var/cache/yum # /bin/rm -rf * # yum clean all # yum update如果运行还不成功,那么重启服务器试试。我的服务器用了各种办法不行&…

金属矿山电子封条系统 yolov5

金属矿山电子封条通过pythonyolov5网络模型框架算法,金属矿山电子封条算法识别到运输设备启动运行或者识别到运输设备运行工作状态下有煤、无煤转换,进行预警分析,金属矿山电子封条算法利用智能化视频识别等技术,实时监测分析矿井出入井人员、…

机器学习技术(六)——有监督学习算法之线性回归算法实操

机器学习技术(五)——有监督学习之线性回归算法实操 引言: 机器学习监督算法是一种基于已有标记数据的学习方法,通过对已知输入和输出数据的学习,建立一个模型来预测新的输入数据的输出。这种算法模仿人类的学习过程&a…

抢跑预制菜,双汇发展转守为攻?

懒,懒出新风口,预制菜竟成了年轻人新时代的“田螺神话”? 《2022年中国预制菜产业发展白皮书》数据显示,2022年全国预制菜的市场规模是4196亿元人民币,到2026年可以突破万亿大关。 预制菜的火爆显而易见,…

ELK日志收集系统集群实验(5.5.0版)

目录 前言 一、概述 二、组件介绍 1、elasticsearch 2、logstash 3、kibana 三、架构类型 四、ELK日志收集集群实验 1、实验拓扑 2、在node1和node2节点安装elasticsearch 3、启动elasticsearch服务 4、在node1安装elasticsearch-head插件 5、测试输入 6、node1服…

【LeetCode题目详解】第八章 贪心算法 part06 738.单调递增的数字 968.监控二叉树 (day37补)

本文章代码以c为例&#xff01; 一、力扣第738题&#xff1a;单调递增的数字 题目&#xff1a; 当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时&#xff0c;我们称这个整数是单调递增的。 给定一个整数 n &#xff0c;返回 小于或等于 n 的最大数字&#xff0c;且数…

嵌入式技术

嵌入式技术 嵌入式微处理器体系结构嵌入式微处理器分类多核处理器嵌入式软件嵌入式系统的组成嵌入式系统的特性 嵌入式技术和计算机网络 超纲的内容很多 这个课件只包含一半的分 其他的分看真题 嵌入式微处理器体系结构 将指令存储器和数据存储器合并在一起的结构 处于同一个存…

搭建一个你的文件共享站

说起文件共享&#xff0c;类似文件站这样的功能。在很久之前我使用过用apache httpd这个方案&#xff0c;这个的话就是太过于简单了。当然是满足需求的&#xff08;又不是不能用&#xff09; 今天来分享一个开源的文件共享平台。Pingvin Share 作者的github地址&#xff1a;ht…

面试了38位Java候选人之后,我总结出了他们关于面试中的16条通病

都说现在Java面试卷&#xff0c;前段时间项目招人的时候&#xff0c;我刚好就作为面试官面试了一些人 在整个面试的过程中&#xff0c;我就发现了一些关于面试的通病 所以呢&#xff0c;趁着这次金&#xff08;铜&#xff09;九银&#xff08;铁&#xff09;十的机会&#xf…

C++用于算法题中简化代码的冷门函数与类模板集合(持续更新中~)

1.accumulate ①求和&#xff1a; 第三个参数作为初始值&#xff0c;将区间[first, end)的值相加&#xff0c;返回初始值加上区间总和的值。 需要注意的是&#xff0c;如果总和超出区间中数的类型范围&#xff0c;可以将第三个参数强转成64位的long long类型 #include <iost…

CentOS 8 安装 Code Igniter 4

在安装好LNMP运行环境基础上&#xff0c;将codeigniter4文件夹移动到/var/nginx/html根目录下&#xff0c;浏览器地址栏输入IP/codeigniter/pulbic 一直提示&#xff1a; Cache unable to write to "/var/nginx/html/codeigniter/writable/cache/". 找了好久&…

企业数字化转型有没有通用的路径和准则?

数字化转型是利用数字技术从根本上改变企业运营方式并向客户提供价值的过程。它涉及将数字技术集成到组织活动的各个方面&#xff0c;从客户交互到内部流程。虽然数字化转型的具体方法可能会根据组织的目标、行业和现有基础设施而有所不同&#xff0c;但有一些通用路径和指南可…

异常的捕获和处理

目录 一、异常 1.异常概述 1.1认识异常 1.2Java异常体系结构 2.Java异常处理机制 2.1异常处理 2.2捕获异常 2.2.1使用try-catch捕获异常 2.2.2使用try-catch-finally处理异常 2.2.3使用多重catch处理异常 2.3抛出异常 2.3.1使用throws声明抛出异常 2.3.2使用throw…

小企业需不需要内部知识库?为什么都在倡导内部知识沉淀?

有多种方法可以提高员工敬业度和员工工作效率&#xff0c;从给予信任到创造积极的工作环境。但一还有一个不为人知但十分有效的方式——为员工创建良好的内部知识库。所以小企业同样需要内部知识库&#xff0c;以下是为什么倡导内部知识沉淀的理由&#xff1a; 知识积累与传承…

Http 1.0 1.1 2.0 3.0 版本差别

Http 1.0 发布年份&#xff1a;1996 非官方标准 短链接&#xff1a;每一次请求都对应一次TCP的连接与释放 开销大&#xff1a;每次请求都要TCP的连接与释放队头阻塞&#xff1a;每次请求都必须等上一次请求获得响应之后&#xff0c;才可以发送&#xff1b;效率低下 缓存&…

理论转换实践之keepalived+nginx实现HA

背景&#xff1a; keepalivednginx实现ha是网站和应用服务器常用的方法&#xff0c;之前项目中单独用nginx实现过负载均衡和服务转发&#xff0c;keepalived一直停留在理论节点&#xff0c;加之最近工作编写的一个技术文档用到keepalived&#xff0c;于是便有了下文。 服务组件…