原博主博客地址:https://blog.csdn.net/qq21497936
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/90241425
需要使用到FFmpeg做播放器编解码,qt自带的播放器有较大局限,如依赖系统,播放黑屏,无法上浮半透明控件,加速播放、减速播放等等。
官方下载地址:https://ffmpeg.zeranoe.com/builds/
CSDN下载地址:https://download.csdn.net/download/qq21497936/10666651
开发使用当前最新的版本4.0.2,版本介绍如下:
笔者开发使用4.0.2的win32版本
笔者安装的Qt5.9.3版本,勾选msvc2017 64版本和mingw32版本,具体安装请百度,此处略。
打开QtCreator新建工程FFmpegDemo,如下图:
笔者遵循代码模块化,所以我们在工程主目录下建立
modules/FFmepgServer/FFmpegServer.pri
在pro头文件中包含FFmpegServer.pri
include($$PWD/modules/FFmpegServer/FFmpegServer.pri)
添加两行代码,用于引入本模块的头文件路径
添加新类FFmepgServer,集成QObject,主要用于提供一些FFmpeg服务,如录屏,抓图,存录像,转流媒体服务等等,不进行播放端操作;(播放属于另一业务块,所以后续会另行创建其他类);
打开模块文件夹,将shared和dev拷贝过来,分别解压到当前文件夹如下图:
正确放置FFmpeg动态库,方法至少有两种:
添加FFmpeg搜索路径和配置工程文件,如下:
INCLUDEPATH += $$PWD/ffmpeg-4.0.2-win32-dev/include
LIBS += -L$$PWD/ffmpeg-4.0.2-win32-dev/lib \
-lavcodec \
-lavdevice \
-lavfilter \
-lavformat \
-lavutil \
-lpostproc \
-lswscale
FFmpegServer.pri如下图:
在FFmpegServer.h添加头文件,因为qt工程是c++工程,必须加入extern “C”,否则在测试的时候会提示找不到函数,如下图:
正确添加的代码如下:
extern "C" {
#include
#include
#include
#include
#include
#include
#include
}
在FFmpeg的构造函数中,使用qDebug()打开出ffmpeg的配置信息,代码如下图:
在Mianwindow中new FFmpegServer类,运行成功则表示搭建qt+ffmpeg开发环境成功,如下图:
当前使用的编译工程如下(注意去掉shadow影子工程):
切换至msvc编译工程报错如下(注意去掉shadow影子工程):
是因为msvc使用的64位的编译器,那么导入ffmpeg sdk 64位的,如下图:
还是将shared/bin下的dll拷贝到dev/lib(参考下图32位的):
修改pri文件(pro无法判断编译器,手动切换或者可自己定义Config判断):
编译运行成功:
添加系统判断和编译器判断,配置文件中是以系统构架来判断编译的位数,实际可能会存在操作系统64位但是编译目标为32位的,那么只能自己注意改动了,因为据笔者目前所知,.pro(.pri)是无法判断编译器位数的。
https://download.csdn.net/download/qq21497936/10667360
(待后续)
原博主博客地址:https://blog.csdn.net/qq21497936
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/90241425