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二次开发及直播美颜原理及应用--梅会东--清华大学出版社
===================================