FFplay源码分析-环境搭建 - C语言音视频技术

/ 0评 / 0

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

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

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



移植开始:

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

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

3,把 《FFmpeg源码分析-环境搭建篇》编译的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 -= qt
​
HEADERS += \
    cmdutils.h \
    config.h
​
SOURCES += cmdutils.c \
    ffplay.c
​
contains(QT_ARCH, i386) {
    message("32-bit")
    INCLUDEPATH += $$PWD/build32/ffmepg-4.2/include
    INCLUDEPATH += $$PWD/SDL2/include
    LIBS += $$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 源码分析,断点调试环境搭建完毕。


©版权所属:知识星球:弦外之音,QQ:2338195090。

由于笔者的水平有限, 加之编写的同时还要参与开发工作,文中难免会出现一些错误或者不准确的地方,恳请读者批评指正。如果读者有任何宝贵意见,可以加我微信 Loken1。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注