FFplay源码分析-调试环境搭建

2024-06-24 01:58

本文主要是介绍FFplay源码分析-调试环境搭建,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《FFmpeg原理》的社群来了,想加入社群的朋友请购买 VIP 版,VIP 版有更高级的内容与答疑服务。


第一篇文章先讲解如何搭建 window 10 qt creator 环境,用来断点调试 ffplay.c 的代码。

请先阅读之前的文章,搭建好预备环境,因为 ffplay.c 的移植跟 ffmpeg.c 类似,所以直接在 《ffmpeg.c 工程移植》基础上讲解。

  • Qt 安装教程
  • FFmpeg MSYS2环境编译教程
  • ffmpeg.c 工程移植

假设你已经看完以上3篇文章了。

移植开始:

1,打开Qt creator,点击New File Or Project,选择 Non-Qt Project ,选择 Plain C Application。创建一个 ffplay-qt-yizhi 工程。

在这里插入图片描述

2,选择 MinGW 32 bit 编译环境。

在这里插入图片描述

3,把 第二篇文章编译的C:\msys64\home\loken\ffmpeg\build32 整个目录拷贝到 ffplay-qt-yizhi 项目目录下。

4,下载SDL 的编译文件,我已经编译好了,下载链接:百度网盘,提取码:60fw 。下载完后把文件解压到 ffmpeg-qt-yizhi 项目目录下。

在这里插入图片描述

5,回到之前我们在MSYS2编译的ffmpeg源码路径,C:\msys64\home\loken\ffmpeg\ffmpeg-4.2,把 FFmpeg-4.2 目录下的 4个 文件都拷贝到 ffplay-qt-yizhi 项目目录下。ffplay 比较简单,只有4个文件。

在这里插入图片描述

6,因为MSYS2环境里面的 config.h 是程序自动生成的,config.h 有些配置是根据 MSYS2环境定制生成的,所以现在拷贝到window10 qt creator的编译环境,config.h 里面有些配置选项需要手动改下。

#define HAVE_GETPROCESSMEMORYINFO 1 改成 #define HAVE_GETPROCESSMEMORYINFO 0
#define HAVE_PTHREAD_CANCEL 0 改成 #define HAVE_GETPROCESSMEMORYINFO 1
#define HAVE_PTHREADS 0 改成 #define HAVE_PTHREADS 1
#define HAVE_W32THREADS 1 改成 #define HAVE_PTHREADS 0

7,修改 ffplay-qt-yizhi.pro 文件:

TEMPLATE = app
CONFIG += console c++11
CONFIG -= app_bundle
CONFIG -= qtHEADERS += \cmdutils.h \config.hSOURCES += cmdutils.c \ffplay.ccontains(QT_ARCH, i386) {message("32-bit")INCLUDEPATH += $$PWD/build32/ffmepg-4.2/includeINCLUDEPATH += $$PWD/SDL2/includeLIBS += $$PWD/build32/ffmepg-4.2/bin/avformat.lib \$$PWD/build32/ffmepg-4.2/bin/avcodec.lib \$$PWD/build32/ffmepg-4.2/bin/avdevice.lib \$$PWD/build32/ffmepg-4.2/bin/avfilter.lib \$$PWD/build32/ffmepg-4.2/bin/avutil.lib \$$PWD/build32/ffmepg-4.2/bin/postproc.lib \$$PWD/build32/ffmepg-4.2/bin/swresample.lib \$$PWD/build32/ffmepg-4.2/bin/swscale.lib    \$$PWD/SDL2/lib/x86/SDL2.lib
} else {message("64-bit")}

8,运行项目。
在这里插入图片描述

9,会提示缺少 DLL,按照之前的教程,把缺的dll都拷贝到 build_xxx/debug 目录。dll都在 ffplay-qt-yizhi 项目里,之前已经拷贝过去了的。

在这里插入图片描述

10,拷贝完缺少的DLL后,再次运行项目。

在这里插入图片描述


ffplay 源码分析,断点调试环境搭建完毕。


©版权所属:弦外之音。

由于笔者的水平有限, 加之编写的同时还要参与开发工作,文中难免会出现一些错误或者不准确的地方,恳请读者批评指正。

这篇关于FFplay源码分析-调试环境搭建的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1088867

相关文章

Redis主从/哨兵机制原理分析

《Redis主从/哨兵机制原理分析》本文介绍了Redis的主从复制和哨兵机制,主从复制实现了数据的热备份和负载均衡,而哨兵机制可以监控Redis集群,实现自动故障转移,哨兵机制通过监控、下线、选举和故... 目录一、主从复制1.1 什么是主从复制1.2 主从复制的作用1.3 主从复制原理1.3.1 全量复制

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

C++中实现调试日志输出

《C++中实现调试日志输出》在C++编程中,调试日志对于定位问题和优化代码至关重要,本文将介绍几种常用的调试日志输出方法,并教你如何在日志中添加时间戳,希望对大家有所帮助... 目录1. 使用 #ifdef _DEBUG 宏2. 加入时间戳:精确到毫秒3.Windows 和 MFC 中的调试日志方法MFC

mysql-8.0.30压缩包版安装和配置MySQL环境过程

《mysql-8.0.30压缩包版安装和配置MySQL环境过程》该文章介绍了如何在Windows系统中下载、安装和配置MySQL数据库,包括下载地址、解压文件、创建和配置my.ini文件、设置环境变量... 目录压缩包安装配置下载配置环境变量下载和初始化总结压缩包安装配置下载下载地址:https://d

将Python应用部署到生产环境的小技巧分享

《将Python应用部署到生产环境的小技巧分享》文章主要讲述了在将Python应用程序部署到生产环境之前,需要进行的准备工作和最佳实践,包括心态调整、代码审查、测试覆盖率提升、配置文件优化、日志记录完... 目录部署前夜:从开发到生产的心理准备与检查清单环境搭建:打造稳固的应用运行平台自动化流水线:让部署像

Redis主从复制的原理分析

《Redis主从复制的原理分析》Redis主从复制通过将数据镜像到多个从节点,实现高可用性和扩展性,主从复制包括初次全量同步和增量同步两个阶段,为优化复制性能,可以采用AOF持久化、调整复制超时时间、... 目录Redis主从复制的原理主从复制概述配置主从复制数据同步过程复制一致性与延迟故障转移机制监控与维

gradle安装和环境配置全过程

《gradle安装和环境配置全过程》本文介绍了如何安装和配置Gradle环境,包括下载Gradle、配置环境变量、测试Gradle以及在IntelliJIDEA中配置Gradle... 目录gradle安装和环境配置1 下载GRADLE2 环境变量配置3 测试gradle4 设置gradle初始化文件5 i

Redis连接失败:客户端IP不在白名单中的问题分析与解决方案

《Redis连接失败:客户端IP不在白名单中的问题分析与解决方案》在现代分布式系统中,Redis作为一种高性能的内存数据库,被广泛应用于缓存、消息队列、会话存储等场景,然而,在实际使用过程中,我们可能... 目录一、问题背景二、错误分析1. 错误信息解读2. 根本原因三、解决方案1. 将客户端IP添加到Re

Mycat搭建分库分表方式

《Mycat搭建分库分表方式》文章介绍了如何使用分库分表架构来解决单表数据量过大带来的性能和存储容量限制的问题,通过在一对主从复制节点上配置数据源,并使用分片算法将数据分配到不同的数据库表中,可以有效... 目录分库分表解决的问题分库分表架构添加数据验证结果 总结分库分表解决的问题单表数据量过大带来的性能

Java汇编源码如何查看环境搭建

《Java汇编源码如何查看环境搭建》:本文主要介绍如何在IntelliJIDEA开发环境中搭建字节码和汇编环境,以便更好地进行代码调优和JVM学习,首先,介绍了如何配置IntelliJIDEA以方... 目录一、简介二、在IDEA开发环境中搭建汇编环境2.1 在IDEA中搭建字节码查看环境2.1.1 搭建步