Windows10上VS2022单步调试FFmpeg 4.2源码

      之前在 https://blog.csdn.net/fengbingchun/article/details/103735560 介绍过通过VS2017单步调试FFmpeg源码的方法,这里在Windows10上通过VS2022单步调试FFmpeg 4.2的方法:基于GitHub上ShiftMediaProject/FFmpeg项目,下面对编译过程进行说明:

      1. 从https://github.com/ShiftMediaProject/FFmpeg clone项目到E:/FFmpeg/4.2目录下,执行git checkout 4.2.r94368 切换到tag 4.2.r94368;注意:不要直接从https://github.com/ShiftMediaProject/FFmpeg/releases/tag/4.2.r94368 下载FFmpeg-4.2.r94368.tar.gz,这样下载下来的不能执行project_get_dependencies.bat;

      2. 下载依赖项,执行SMP目录下的project_get_dependencies.bat,执行结果如下,可能需要等待较长时间,而且可能需要执行多次,直到所有的依赖项全部clone下来,注意:clone的项目在E:/FFmpeg/4.2目录下,与clone FFmpeg在同一目录

      3. 按照SMP/readme.txt中的说明,下载额外依赖文件,手动创建新目录:E:/FFmpeg/msvc:
      (1). 从https://www.khronos.org/registry/OpenGL/index_gl.php  下载glext.h和wglext.h,将其保存到新创建的目录msvc/include/gl下;
      (2). 从https://www.khronos.org/registry/OpenGL/index_gl.php 下载khrplatform.h,将其保存到新创建的目录msvc/include/KHR下;
      (3). 从https://github.com/FFmpeg/nv-codec-headers 下载include/ffnvcodec,将ffnvcodec整个目录拷贝到目录msvc/include下;注意:不能使用最新的master,要使用tag为n9.1.23.1的版本
      (4). 从https://github.com/GPUOpen-LibrariesAndSDKs/AMF 下载amf/public/include,将include下的内容保存到新创建的目录msvc/include/AMF下; 

      4. 有些项目有汇编代码需要ASM编译,如libavutil需要NASM,依赖项libvpx需要YASM:
      (1). 从https://github.com/ShiftMediaProject/VSNASM clone VSNASM,以管理员身份运行install_script.bat,执行结果如下图所示:本机有vs2019和vs2022两个版本

      (2). 从https://github.com/ShiftMediaProject/VSYASM clone VSYASM,以管理员身份运行install_script.bat,执行结果如下图所示:

      5. 使用vs2022打开FFmpeg/SMP/ffmpeg_deps.sln,47个项目均加载成功 ,如下图所示:

      6. 可选择编译静态库/动态库,Debug/Release,x86/x64:这里选择x64 动态库 Debug,选中解决方案"ffmpeg_deps",点击重新生成解决方案,解决编译error,最终执行结果如下图所示:

 

      (1).依赖nasm的项目编译不过,原因是在C:\Program Files\Microsoft Visual Studio\2022\Community\VC目录下不知什么原因并没有nasm.exe,只有yasm.exe,解决方法:从https://www.nasm.us/pub/nasm/releasebuilds/2.16.01/win64/ 下载nasm-2.16.01-installer-x64.exe,安装后,将安装目录下的nasm.exe拷贝到C:\Program Files\Microsoft Visual Studio\2022\Community\VC目录下即可;
      (2).编译libavcodec项目时,会报error C2065: "NV_ENC_PARAMS_RC_CBR_LOWDELAY_HQ"等未声明的标识符,原因是从https://github.com/FFmpeg/nv-codec-headers 下载的最新的master分支的code已不兼容FFmpeg 4.2版本,使用FFmpeg/nv-codec-headers tag为n9.1.23.1即可解决;
      (3).libvpxdec.obj : error LNK2001: 无法解析的外部符号 vpx_codec_vp8_dx_algo:解决方法:libvpx不使用最新的master分支,使用tag v1.8.1-1,并将libvpx的工程更新到vs2022,重新编译即可解决
      成功编译后:E:\FFmpeg\msvc\include目录下存放头文件;E:\FFmpeg\msvc\lib\x64目录下存放静态库;E:\FFmpeg\msvc\bin\x64目录下存放动态库和可执行文件; 

      7.验证可执行文件的正确性:
      (1).验证ffmpegd.exe:获取视频设备名,执行如下命令,执行结果如下图所示:检测到的视频设备名为"Integrated Webcam"

ffmpegd.exe -list_devices true -f dshow -i dummy

 

      (2).验证ffplayed.exe:播放一个编码格式为h264,像素格式为bgr24,帧大小为640*360的文件,执行如下命令,执行结果如下图所示:可正常播放 

ffplayd.exe -i abc.mp4

      (3).验证ffprobed.exe:查看abc.mp4视频文件信息,执行如下命令,执行结果如下图所示:可正常显示视频文件信息

ffprobed.exe abc.mp4

      8. 新建一个test_ffmpeg项目,参考源码中doc/examples中示例代码:设置断点后,即可进入源码,如下图所示:

 

      GitHub:https://github.com/fengbingchun/OpenCV_Test

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

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

相关文章

渗透测试面试题汇总(附答题解析+配套资料)

注:所有的资料都整理成了PDF,面试题和答案将会持续更新,因为无论如何也不可能覆盖所有的面试题。 一、思路流程 1、信息收集 a、服务器的相关信息(真实ip,系统类型,版本,开放端口,…

vue 实现腾讯地图搜索选点功能(附加搜索联想功能)

注意&#xff1a;开发环境、正式环境需在腾讯地图配置ip地址白名单、域名白名单 封装map组件&#xff1a; <template><iframe width"100%" style"border: none;width: 100%;height: 100%;" :src"map_src"></iframe> </t…

新服务器基本环境下载conda + docker + docker-compose + git

文章目录 Ubuntu 允许root用户登录 centos无所谓condadockerubuntucentos docker-compose官方下载docker-compose国内镜像 gitUbuntuCentos Ubuntu 允许root用户登录 centos无所谓 # 以普通用户登录系统&#xff0c;创建root用户的密码 sudo passwd root# SSH 放行 sudo sed -…

Java免费自学网站墙裂推荐!!!!

最近&#xff0c;常有一些读者问我&#xff1a;“有没有什么推荐的Java学习网站啊&#xff1f;” 因为一直没有时间&#xff0c;所以我之前也是让大家上知乎、搜索引擎搜一下就好了。 但是&#xff0c;我深知不能这样&#xff0c;应该拿出更真诚的态度带来优质的内容。 于是…

uni-app开启gzip配置

指令&#xff1a;npm install webpack4.46.0 --save-dev 指令&#xff1a;npm install compression-webpack-plugin6.1.1 --save-dev vue.config.js const CompressionWebpackPlugin require(compression-webpack-plugin);module.exports {configureWebpack: config > {…

IntelliJ IDEA 编辑器的全局搜索中使用正则表达式

打开 IntelliJ IDEA 编辑器。 使用快捷键 Ctrl Shift F&#xff08;Windows / Linux&#xff09;或 Cmd Shift F&#xff08;Mac&#xff09;打开全局搜索窗口。在搜索框中输入要搜索的内容&#xff0c;例如&#xff1a;“设备【】已经绑定网关”。在搜索框旁边的 “.*” …

轻松搭建远程Node.js服务端,让你的应用在公共网络中畅行无阻!

文章目录 前言1.安装Node.js环境2.创建node.js服务3. 访问node.js 服务4.内网穿透4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5.固定公网地址 前言 Node.js 是能够在服务器端运行 JavaScript 的开放源代码、跨平台运行环境。Node.js 由 OpenJS Foundation&#xff0…

linux安装 MySQL8 并配置开机自启动

目录 1.下载 mysql 安装包 2.上传并解压 mysql 3.修改 mysql 文件夹名 4.创建mysql 用户和用户组 5.数据目录 &#xff08;1&#xff09;创建目录 &#xff08;2&#xff09;赋予权限 6.初始化mysql &#xff08;1&#xff09;配置参数 &#xff08;2&#xff09;配置环…

ChatGPT应用于高职教育的四大潜在风险

目前&#xff0c;ChatGPT还是一种仍未成熟的技术&#xff0c;当其介入高职教育生态后&#xff0c;高职院校师生在享受ChatGPT带来的便利的同时&#xff0c;也应该明白ChatGPT引发的风险也会随之进入高职教育领域&#xff0c;如存在知识信息、伦理意识与学生主体方面的风险与挑战…

爬虫异常处理:异常捕获与容错机制设计

作为一名专业的爬虫程序员&#xff0c;每天使用爬虫IP面对各种异常情况是我们每天都会遇到的事情。 在爬取数据的过程中&#xff0c;我们经常会遇到网络错误、页面结构变化、被反爬虫机制拦截等问题。在这篇文章中&#xff0c;我将和大家分享一些关于如何处理爬虫异常情况的经…

ChatGpt 从入门到精通

相关资源下载地址: 基于ChatGPT的国际中文语法教学辅助应用的探讨.pdf 生成式人工智能技术对教育领域的影响-关于ChatGPT的专访.pdf 电子-从ChatGPT热议看大模型潜力.pdf 从图灵测试到ChatGPT——人机对话的里程碑及启示.pdf 正文 ChatGPT 是一种强大的自然语言处理模型&…

SpringBoot(二)

###SpringBoot原理分析 ###SpringBoot监控 ###SpringBoot项目部署 #SpringBoot自动配置 Condition&#xff1a;&#xff08;条件&#xff09; Condition是在Spring4.0增加的条件判断功能&#xff0c;通过这个功能可以实现选择性的创建Bean操作 SpringBoot是如何知道要创建…

隧道vs免费爬虫ip:为何要选择隧道爬虫ip?

在网络爬虫的世界中&#xff0c;爬虫ip是一项关键技术&#xff0c;它可以帮助我们隐藏身份、突破限制、提高抓取效率。但是&#xff0c;在选择爬虫ip时&#xff0c;我们常常会面对隧道爬虫ip和免费爬虫ip之间的抉择。在本文中&#xff0c;我们将探讨隧道爬虫ip相对于免费爬虫ip…

ROS_LINUX入门学习笔记=2=

B站ros机器人工匠阿杰入门教程 rqt_robot_steering 控制小乌龟 在index ros .rog中查找相关的包&#xff1a;ros_index 下图是rqt_robot_steering的简介 其中可以查看github源码地址 website可以查看效果图 下载相关的包 sudo apt install ros-kinetic-rqt-robot-steering …

WSL 配置 Oracle 19c 客户端

Windows WSL 登陆后显示如下: Welcome to Ubuntu 20.04.4 LTS (GNU/Linux 4.4.0-19041-Microsoft x86_64)* Documentation: https://help.ubuntu.com* Management: https://landscape.canonical.com* Support: https://ubuntu.com/advantageSystem information as…

学习内容--

C后台开发_c做后台_人面桃花相映红的博客-CSDN博客 C/C后端开发学习路线总结&#xff08;附带实习学习经历分享&#xff09;_c后端开发需要学什么_Linux后台开发狮的博客-CSDN博客 学到什么程度才可以面试大厂&#xff1f;c/c后台开发进阶指南 后端开发&#xff08;超全&…

会计如何使用ChatGPT提高工作效率

文章目录 ChatGPT改变了会计行业微软重新定义了PC交互应对ChatGPT带来的冲击给财务人员的建议总结 ✍创作者&#xff1a;全栈弄潮儿 &#x1f3e1; 个人主页&#xff1a; 全栈弄潮儿的个人主页 &#x1f3d9;️ 个人社区&#xff0c;欢迎你的加入&#xff1a;全栈弄潮儿的个人社…

Java“牵手”根据关键词搜索(分类搜索)拼多多商品列表页面数据获取方法,拼多多API实现批量商品数据抓取示例

拼多多商城是一个网上购物平台&#xff0c;售卖各类商品&#xff0c;包括服装、鞋类、家居用品、美妆产品、电子产品等。要获取拼多多商品列表和商品详情页面数据&#xff0c;您可以通过开放平台的接口或者直接访问拼多多商城的网页来获取商品列表和详情信息。以下是两种常用方…

No mapping found for HTTP request with URI

参考: 参考地址 说明 ssm老项目,接过来别人的项目 临时建了一个Controller方便测试用的,结果访问掉不通,报: No mapping found for HTTP request with URIxxxx 这样的错误 解决办法 看了下web,xml配置 在 webmvc-config.xml 配置文件里面添加了几行配置 说明: com.iph.h…

Golang 批量执行/并发执行

提到Golang&#xff0c;都说Golang 天生高并发。所以分享一下我认为的Golang高并发精髓 简单的并发执行util package util import ("context""sync" )type batchRunner struct {BatchSize intctx context.Contextchannel chan func()wg sy…