Qt调试ffmpeg.c

  • 前言
  • 下载FFmpeg
  • 下载FFmpeg-Builds-Win32
  • 下载并安装Qt
  • 创建Qt工程
  • 添加代码
  • 编译ffmpeg.c
  • 解决编译ffmpeg.c的问题
  • 调试ffmpeg.c
  • 后记

前言

最近在学习一些视频编解码相关的知识,发现大家都推荐FFmpeg库。FFmpeg库有个牛逼的ffmpeg命令,这个命令是通过ffmpeg.c文件编译出来的。正好最近代码没思路,必须要通过单步调试ffmpeg.c,借鉴一下优秀思想。

学习新的代码库都是从编译开始的,但是很多博客都说编译ffmpeg是一个比较复杂的过程,尤其是在windows上那就更加麻烦。本文为了更直接的达到调试ffmpeg.c的目的,采用开源社区的FFmpeg发布版本。

下载FFmpeg

登录到FFmpeg官网,进入到下载页面下载ffmpeg-4.4.1.tar.bz2

解压ffmpeg-4.4.1.tar.bz2源代码得到目录:

本文我们主要关注ffmpeg.c文件的调试,ffmpeg.c文件在fftools目录:

下载FFmpeg-Builds-Win32

首先在github上面找到一个FFmpeg-Builds-Win32的项目
FFmpeg-Builds-Win32,进入到下载页面下载ffmpeg-n4.4.1-2-gcc33e73618-win32-gpl-shared-4.4.zip

为什么要找FFmpeg-Builds-Win32这个项目,直接去FFmpeg官网下载编译好的程序的不香么。

原因是FFmpeg官网给的都是64位编译器编译出来的代码,而为了减少麻烦,直接用Qt自带的32编译器来调试FFmpeg才是最简单实用的办法。

下载完毕解压得到ffmpeg-n4.4.1-2-gcc33e73618-win32-gpl-shared-4.4目录:

下载并安装Qt

本文使用开源Qt版本,由于个人使用的是5.10.1版本,但是该没有在官网找到该版本。

如果有需求,可以在Qt官网下载新版本的离线安装包:5.12.x Offline Installers

点击下载完成的Qt离线安装包,开始安装。

欢迎页面

设置Qt账户
此处如果没有Qt账户,需要注册一个Qt账户,然后才能继续安装。

设置安装路径

选择安装组件

接受许可协议

开始菜单快捷方式

执行安装

安装完成

创建Qt工程

打开Qt,在文件菜单中,选择新建文件或项目,弹出New File or Project对话框,操作过程如下图:

右下角选择Choose继续下一步。

弹出新的Project Location对话框,填写名称创建路径,右下角选择下一步继续:

Define Build System默认选择qmake,继续下一步

Kit Selection选择Desktop Qt 5.10.1 MinGW 32Bit,继续下一步

Project Management啥都不用选择,直接点击完成

添加代码

在新创建出来的工程中,找到main.c文件,彻底删除:

从FFmpeg源代码的fftools目录拷贝如下文件到ffpmeg-debuger工程目录:

Qt工程添加现有文件到工程:

添加现有文件对话框中选中必要的文件:

添加文件之后,Qt工程如下:

拷贝FFmpeg-Builds-Win32解压目录下的includelib目录到ffmpeg-debugger工程目录:

修改ffmpeg-debugger.pro为如下内容:

TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qtSOURCES += \cmdutils.c \ffmpeg.c \ffmpeg_filter.c \ffmpeg_hw.c \ffmpeg_opt.cINCLUDEPATH += $$PWD/includeLIBS += $$PWD/lib/avcodec.lib    \$$PWD/lib/avdevice.lib   \$$PWD/lib/avfilter.lib   \$$PWD/lib/avformat.lib   \$$PWD/lib/avutil.lib     \$$PWD/lib/postproc.lib   \$$PWD/lib/swresample.lib \$$PWD/lib/swscale.lib

编译ffmpeg.c

点击左下角的构建项目按钮,开始执行ffmpeg.c的构建:

解决编译ffmpeg.c的问题

尝试编译ffmpeg.c的过程中,不断发现有缺失的文件,最终汇总缺失的文件列表如下:

//ffmpeg-debugger的include目录缺失的文件
include\libavcodec\mathops.h
include\libavformat\os_support.h
include\libavutil\internal.h
include\libavutil\libm.h
include\libavutil\reverse.h
‪include\libavutil\thread.h
include\libavutil\timer.h
include\libavutil\wchar_filename.h
//ffmpeg-debugger的根目录缺失的文件
compat/va_copy.h

这些文件为什么缺失,目前还没研究那么深,暂且不清楚。

个人的解决办法是之前在windows10的WSL子系统编译过一次FFmpeg库,直接从WSL子系统中把缺失的头文件拷贝到ffmpeg-debugger工程的对应目录。

如果有需要,也可以直接在此下载:Qt调试ffmpeg.c时缺失的一些头文件汇总

将缺失的头文件拷贝到指定目录,继续尝试编译ffmpeg.c,发现有若干处需要注释代码的地方。

cmdutils.c第37行注释掉

cmdutils.c第60行注释掉

cmdutils.c第1074到1077行注释掉

cmdutils.c第1101到1128行注释掉

ffmpeg.c第76行注释掉

ffmpeg.c第90行注释掉

ffmpeg.c第95行注释掉

ffmpeg.c第97行注释掉

ffmpeg.c第422到440行注释掉

ffmpeg.c第3791到3796行注释掉

ffmpeg.c第4915到4921行注释掉

ffmpeg.c第332到333行注释掉

ffmpeg.c第4940到4942行注释掉

ffmpeg.c第164行注释掉

ffmpeg_filter.c第29行注释掉

ffmpeg.c第461到476行注释掉

修改完成后,再次编译,没有错误信息:

调试ffmpeg.c

ffmpeg.c编译完成得到ffmpeg-debuger.exe,这是一个命令行程序,必须设置命令行参数才可以正确启动。

设置ffmpeg.c调试命令行参数如下:

本文使用Qt调试ffmpeg.c时,命令行参数如下:

-i D:\ffmpeg\ffmpeg-debug\jindou.mp4 -c:v libx264 -c:a copy -f mpegts D:\ffmpeg\ffmpeg-debug\jindou.ts -y

其中,
D:\ffmpeg\ffmpeg-debug\jindou.mp4:输入视频文件本地路径
D:\ffmpeg\ffmpeg-debug\jindou.ts:输出视频文件本地路径

设置完成启动参数后,点击调试按钮调试ffmpeg.c,在调换环境中,可以查看当前打开文件列表、当前调用栈、当前堆栈参数、当前断点位置、所有断点列表等信息。

对于习惯使用visual studio和visual studio code的人,这个界面相信也很亲切。

后记

本文给出了一种在windows10系统中使用Qt调试ffmpeg.c的一种可行的思路,可能还有很多坑没有踩到,后续如果使用过程中遇到问题再改进。

Windows10系统Qt调试ffmpeg.c相关推荐

  1. linux系统 qt调试,Linux下Qt Creator远程调试(redhat5+mini6410)

    当我们开发嵌入式系统下的Qt应用程序时,有时候不能在虚拟机上进行调试,这时候我们需要通过远程调试的方式在PC上调试嵌入式系统下的Qt应用程序.这样就产生了交叉调试. 本文环境介绍: 虚拟机:vmwar ...

  2. windows下Eclipse调试ffmpeg

    windows下mingw编译ffmpeg 一.编译环境配置 1.Mingw的安装 (1).MINGW的下载网址:https://sourceforge.net/projects/mingw/file ...

  3. Windows10系统的Linux子系统中安装MySQL数据库心得

    后端开发童鞋们, 自己开发机用的是Windows系统电脑(台式机或笔记本), 而开发的程序和使用的数据库等要运行在Linux服务器上, 这种情况有木有? 提前声明: 本文并不讨论操作系统的比较, 以及 ...

  4. Windows10系统goland代码跳转ctrl + alt +←或→箭头快捷键无效

    之前使用goland对代码调试的时候,可以使用ctrl + alt + →或→左右箭头 快捷键进行代码跳转,最近在使用Windows10进行开发的时候发现这个快捷键无效. 原来是Windows10系统 ...

  5. Windows10系统蓝屏解决方案

    Windows10蓝屏解决方案 平常大家使用Windows10系统时难免会出现一些问题,而在工作中电脑突然蓝屏显得尤其让人烦恼.今天,我就来介绍几个常用的解决蓝屏小方法吧! 第一步 首先,出现蓝屏问题 ...

  6. Windows10系统下MPI编程环境配置(超级详细)

    Windows10系统下MPI编程环境配置(超级详细) 1.MS-MPI下载 进入官网下载MPI文件,下载地址: https://www.mpich.org/ 下拉到最底部,点击Microsoft W ...

  7. 使用 VS2015 编译并调试 ffmpeg

    导读 ffmpeg 是音频处理方面非常强大非常有名的开源项目了,然而如 雷神 所说,"FFMPEG 难度比较大,却没有一个循序渐进,由简单到复杂的教程.现在网上的有关FFMPEG的教程多半难 ...

  8. iPhone系统删除描述文件过程导致的Windows10系统无法连接到任何网络

    Windows10系统无法连接到任何网络的情况(陆续报错:1068.1053.50-等) 由于前几天使用IOS系统iPhone看了一些难以启齿东西导致 iPhone增加了个无法删除的描述文件 (这个怎 ...

  9. 盘点Windows10系统的使用小技巧三 —— 虚拟桌面

    目录 用途介绍 使用介绍 快捷键介绍 很多时候,我们总是因桌面上那多且凌乱的窗口而烦躁不堪,有时候多希望能够同时使用多个显示屏,然而这并不现实. 其实,Windows10系统已经自带了一个解决方案-- ...

最新文章

  1. python pycharm 包 安装问题
  2. STM32中关于RCC时钟的理解
  3. FZU 1019猫捉老鼠
  4. python 预编译加速_让Python代码运行更快的最佳方式
  5. (转)Three challenges you’re going to face when building a chatbot
  6. php mysql 查询时间_PHP-MySQL查询需要大量时间才能执行
  7. 国科大prml13-概率图(CRF,HMM)
  8. github搜索技巧_和逛知乎、刷微博一样高效使用 GitHub
  9. 6月份Github上最热门的Java开源项目!
  10. 安装Electron
  11. 80字符带空格 段错误_简单错误记录
  12. python开发微信扫码支付
  13. 互联网日报 | 瑞幸咖啡内部调查基本完成;12306官方支付宝小程序上线;华为openGauss正式开源...
  14. 14讲项目实战内页抽出切换效果的实现
  15. 半同步/半异步模式,半同步半反应堆reactor模式
  16. 送分了QAQ(前缀和)
  17. 百度员工:上午11点上班,晚上9点下班,年薪80万买房太轻松了
  18. 数据库系统概论中国人民大学MOOC第一章数据库系统知识点总结(2) 层次结构- 网状结构-关系结构数据的完整性约束条件单向链接 双向链接 环状链接 向首链接
  19. 看我是如何严辞拒绝同学借钱的
  20. 家乡菜之回锅茄子_wizard_新浪博客

热门文章

  1. 【51单片机实验笔记】1. LED的初级控制
  2. 千张照片合成你一张美照-【OpenCV实战二】
  3. Centos7设置1920x1080分辨率
  4. Brenda-利用SOAP API访问Brenda及本地保存
  5. java下载压缩包文件zip
  6. 线程池原理初探以及源码分析(详解)
  7. matlab论文答辩题目,毕业设计答辩评及参考题目.doc
  8. KVM管理虚拟机:常用命令
  9. python使用第三方函数库_Python(七)python下的内部函数库和第三方函数库
  10. 做人晶莹剔透,做事水滴石穿