FFmpeg入门详解之118:FFmpeg4.3 SDL2 Qt5开发环境的搭建

2.FFmpeg4.3+SDL2+Qt5开发环境的搭建

搭建环境Qt5+FFmpeg4.3

QT + FFMPEG4.3 开发环境搭建

步骤简要

三部曲:

1.头文件、

2.库文件

3.运行时dll/so

step1: 下载FFmpeg相应的动态库文件和程序执行所依赖的.dll文件。

step2: 将动态库所对应的头文件和动态库文件加入工程

step 3: 将dll文件copy到.exe文件所对应的目录下。

注意:

官方编译好的下载地址已经无法打开,

我将ffmepg4.3.1(32位)的开发包和源码上传到了百度云:

链接:https://pan.baidu.com/s/1-3xSO6ytyQLlSId0Xiak4w 

提取码:fyxy

敬告:如需要64位的开发包,请自己编译

下载FFMpeg对应的动态库和DLL文件

1 下载地址:(FFmpeg4.3.1)

开发环境为win10 64bit +QT5.9.8 ,需下载window 32 bit对应的shared文件(包含dll文件)和Dev文件(包含动态库和include的文件以及examples)。

注意window-64bit的开发库时,提示 “xxx undefined  reference ”。.

step 2 :将动态库和头文件加入project

将下载的dev文件解压,文件名改为ffmpeglib,并copy到工程所在的目录

一)加入头文件

INCLUDEPATH += $$PWD/ffmpeg/include

二)加入动态库文件

LIBS    += $$PWD/ffmpeg/lib/avcodec.lib \

            $$PWD/ffmpeg/lib/avdevice.lib \

            $$PWD/ffmpeg/lib/avfilter.lib \

            $$PWD/ffmpeg/lib/avformat.lib \

            $$PWD/ffmpeg/lib/avutil.lib \

            $$PWD/ffmpeg/lib/postproc.lib \

            $$PWD/ffmpeg/lib/swresample.lib \

            $$PWD/ffmpeg/lib/swscale.lib 

--->ffmpeg:

INCLUDEPATH += $$PWD/../FFmpeg431dev/include

LIBS    +=  $$PWD/../FFmpeg431dev/lib/avcodec.lib \

            $$PWD/../FFmpeg431dev/lib/avdevice.lib \

            $$PWD/../FFmpeg431dev/lib/avfilter.lib \

            $$PWD/../FFmpeg431dev/lib/avformat.lib \

            $$PWD/../FFmpeg431dev/lib/avutil.lib \

            $$PWD/../FFmpeg431dev/lib/postproc.lib \

            $$PWD/../FFmpeg431dev/lib/swresample.lib \

            $$PWD/../FFmpeg431dev/lib/swscale.lib

三)开始写code

包含头文件,注意QT为C++开发环境,FFMpeg用的是C 开发的,在CPP导入C的特性,需加关键词“ extern  “C”“

extern "C"{

#include <libavcodec/avcodec.h>

#include <libavformat/avformat.h>

#include <libswscale/swscale.h>

#include <libavdevice/avdevice.h>

#include <libavformat/version.h>

#include <libavutil/time.h>

#include <libavutil/mathematics.h>

}

定义相关宏,否则就报错,如error: #error missing -D__STDC_CONSTANT_MACROS”

extern "C"{

#ifdef __cplusplus

#define __STDC_CONSTANT_MACROS

#ifdef _STDINT_H

#undef _STDINT_H

#endif

#include <stdint.h>

#endif

}

添加如下code,若能成功输出ffmpeg version信息,则代表开发环境搭建成功。

int main(int argc, char* argv[])

{

    QCoreApplication a(argc, argv);

    qDebug()<< avcodec_configuration();

    unsigned version = avcodec_version();

    QString ch = QString::number(version,10);

    qDebug()<< "version:"<<version;

    return a.exec();

}

四)运行程序,需要复制dll

将share文件下dll文件 copy to 该工程生成的exe文件所在的目录。

否则会“程序异常退出”。

搭建环境SDL2.0+Qt5.9

1 下载SDL2

http://www.libsdl.org/download-2.0.php

2 解压SDL2.0

3 Qt5项目文件添加

INCLUDEPATH+=E:/FFMPEG/SDL2/include

LIBS += -LE:/FFMPEG/SDL2/lib/x86 -lSDL2

LIBS += -LE:/FFMPEG/SDL2/lib/x86 -lSDL2main

LIBS += -LE:/FFMPEG/SDL2/lib/x86 -lSDL2test

注意:(栽跟头)

/ SDL library already declare main funtion...

#undef main

4 测试代码

一、环境

Win7 64

qt-opensource-windows-x86-5.9.8.exe

SDL 2.0.9

二、下载

Qt可直接下载的页面

SDL2下载页面

SDL2下载的是VC版本

三、新建qt项目

1、新建一个纯C项目

2、把SDL文件放到项目中

3、修改qt项目设置

pro文件加入SDL路径

INCLUDEPATH += ../SDL2/SDL2/include/

LIBS += -L../SDL2/SDL2/lib/x86 -lSDL2

LIBS += -L../SDL2/SDL2/lib/x86 -lSDL2main

LIBS += -L../SDL2/SDL2/lib/x86 -lSDL2test

项目设置-RUN的环境变量中加入SDL2.DLL的路径

如果这部漏了,就会出错。SDL2 exited with code -1073741515

四、添加测试代码

复制代码
#include <stdio.h>
#include "SDL.h"
#undef main
int main()
{
    SDL_Window* gWindow = NULL;
    SDL_Surface* gScreenSurface = NULL;
    if(SDL_Init(SDL_INIT_VIDEO)<0)
    {
        printf( "Window could not be created! SDL_Error: %s\n", SDL_GetError() );
        return 0;
    }
    gWindow=SDL_CreateWindow("SHOW BMP",SDL_WINDOWPOS_UNDEFINED,SDL_WINDOWPOS_UNDEFINED,215,134,SDL_WINDOW_SHOWN);
    if(gWindow==NULL)
    {
        printf( "Window could not be created! SDL_Error: %s\n", SDL_GetError() );
        return 0;
    }
    gScreenSurface=SDL_GetWindowSurface(gWindow);
    SDL_FillRect(gScreenSurface, NULL, SDL_MapRGB(gScreenSurface->format, 0xFF, 0x00, 0x00));
    SDL_UpdateWindowSurface(gWindow);
    SDL_Delay(2000);
    SDL_FreeSurface( gScreenSurface );
    gScreenSurface = NULL;
    SDL_DestroyWindow(gWindow);
    gWindow = NULL ;
    SDL_Quit();
    return 0;
}

大家好,我的第一本书正式出版了,可以在京东各大店铺抢购哦。

《FFmpeg入门详解--音视频原理及应用:梅会东:清华大学出版社》

京东自营链接:https://item.jd.com/13377793.html
京东其它链接:https://search.jd.com/Search?keyword=FFmpeg%E5%85%A5%E9%97%A8%E8%AF%A6%E8%A7%A3--%E9%9F%B3%E8%A7%86%E9%A2%91%E5%8E%9F%E7%90%86%E5%8F%8A%E5%BA%94%E7%94%A8&enc=utf-8&suggest=1.his.0.0&wq=&pvid=24e80535073b4e1f98e30a3e6963fe81
 

 

出书过程非常艰辛,来回校正了好几遍,后续还有FFmpeg系列的其它图书。

第一本:FFmpeg入门详解--音视频原理及应用--梅会东--清华大学出版社

第二本:FFmpeg入门详解--流媒体直播原理及应用--梅会东--清华大学出版社

第三本:FFmpeg入门详解--命令行及音视频特效原理及应用--梅会东--清华大学出版社

第四本:FFmpeg入门详解--SDK二次开发及直播美颜原理及应用--梅会东--清华大学出版社

===================================

猜你喜欢

转载自blog.csdn.net/teachermei/article/details/127650461