本文主要是介绍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源码分析-调试环境搭建的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!