【版权申明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)
Hiboat源代码: 基于Qt-ffmpeg写的一个多媒体播放器
在QtCreator下使用ffmpeg的环境搭建
我的项目目录结构如下:
Hiboat_qt # QT的工程目录
dependence # ffmpeg的依赖文件放置目录
ffmpeg # 项目用到的ffmpeg头文件以及库文件放置目录
lib
include
src # 项目的源文件
.gitignore
Hiboat_qt.pro # qt的工程文件
.gitignore
README.md
1. 放置ffmpeg的头文件以及库文件
在Hiboat_qt\dependence目录下选择和自己qt minGW相同位数的包, 打开ffmpeg-4.2.2-xxxx-dev.zip, 将里面的include和lib放置到Hiboat_qt\ffmpeg下.2. 在Hiboat_qt工程文件(Hiboat_qt.pro)中添加头文件和库文件路径
这操作可以使程序在编译构建时不会报找不到头文件以及库文件的错. 毕竟你不告诉人家, 人家怎么知道呢...#Hiboat dependence.
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
3. Crtl+B快捷键来构建当前的QT工程
构建工程时生成一个 build-Hiboat_qt-Desktop_xxxxx-Debug文件夹, 我们需要在合适的位置放入动态库文件, 当qt程序运行时可以找到它期待的库, 从而不会导致报错(链接错误).与第一步类似, 我们在Hiboat_qt\dependence\winxx中选择ffmpeg-4.2.2-winxx-shared.zip压缩包, 将里面的*.dll全部放置到Hiboat\build-Hiboat_qt-Desktop_xxxxx-Debug\xxxx文件夹中, 这个xxx取决你编译时选择的是debug选项还是release选项. 如下图
4. 在工程的main.c文件中写入以下内容进行测试
#include "mainwindow.h"
#include <QApplication>
#include <QDebug>
extern "C"
{ // 因为ffmpeg是C库函数, 所以在C++中使用需要加上extern "C"包含头文件防止报错.
#include "libavcodec/avcodec.h"
#include "libavformat/avformat.h"
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
av_register_all(); // 初始化ffmpeg, 这是一个过时的函数, 刚开始学用这个会比较上手.
qDebug() <<"avcodec_version(): " <<avcodec_version(); // avcodec_version(): 查询编码器的版本号, 可以用来验证我们的ffmpeg是不是已经在qt中搭建起来了.
MainWindow w;
w.show();
return a.exec();
}
运行qt程序, 如无意外, 此时可以看到控制台输出的信息. 环境搭建成功.