Windows10 + Qt+ffmpeg开发环境
Windows上搭建Qt + ffmpeg开发环境
这是我时隔多年再一次开写博客。这次主题是**构建 Windows10 +msys2+Qt +ffmpeg 开发环境 ** 。
版本选择
工具 | 版本 | 说明 |
---|---|---|
Windows | 10 | 8年老机,512G SSD硬盘 容光焕发 |
Qt | 5.15.2 | 最新稳定LTS版,注册账号登录 下载在线安装器 |
msys2 | 4.3.2 | msys2-x86_64-latest.exe |
msys2 pacman 镜像设置 | ||
ffmpeg | 4.3.2 | 下载源码 ffmpeg-4.3.2.tar.gz |
安装步骤
其中,1/2两步骤很简单,直接下一步就可以了,唯一要注意的就是,Qt在选择编译make的时候,要选择MinGW64位的(因为ffmpeg默认64位,官方提供的编译好的库也是64位的,我们自己编译出来的也是64位)
编译ffmpeg开发库/可执行文件
第一步,配置configure
大约需要几分钟时间,默默等待,喝杯茶~刷个新闻就过去了:
./configure --prefix=/usr/local/ffmpeg --enable-shared
第二步,编译代码
以我的老年机性能,6G内存,512G SSD,大约花了50分钟。。。
make -j 4
第三步,安装到指定目录
我们这里安装到MinGW的 /usr/local/ffmpeg 下
make install
到这里,ffmpeg就完成编译了,得到了开发库和头文件。
$ ls -l /usr/local/
total 0
drwxr-xr-x 1 nilyang None 0 Mar 1 16:18 etc
drwxr-xr-x 1 nilyang None 0 Mar 4 22:53 ffmpeg
注意: /usr/local/目录是相对于 msys2安装目录而言的,例如我的机子msys2安装到这里
D:\ProgramSofts\msys64
,而
/usr/local/ffmpeg
的目录就是以此为根目录。
我们的ffmpeg全路径就在这里了:D:\ProgramSofts\msys64\usr\local\ffmpeg
Qt 新建C++工程
拷贝库文件到工程目录下
将 D:\ProgramSofts\msys64\usr\local\ffmpeg
目录整个拷贝到Qt C++工程目录下,然后引入到项目配置文件中!
main.pro
TEMPLATE = app
TARGET = myapp
CONFIG += console c++11
CONFIG -= app_bundle
CONFIG -= qt
SOURCES += main.cpp
INCLUDEPATH += $$PWD/ffmpeg/include
DEPENDPATH += $$PWD/ffmpeg/include
LIBS += -L$$PWD/ffmpeg/bin/ -lavformat -lavdevice -lavutil
main.cpp
#include <iostream>
extern "C"
{
#include"libavformat/avformat.h"
#include"libavdevice/avdevice.h"
#include"libavutil/avutil.h"
}
int main()
{
av_log_set_level(AV_LOG_DEBUG);
av_log(NULL, AV_LOG_DEBUG,"Hello ffmpeg!\n");
av_log(NULL, AV_LOG_DEBUG,"ffmpeg version = %s\n", av_version_info());
return 0;
}
编译成功~
运行结果:
Hello ffmpeg!
ffmpeg version = 4.3.2
新手错误记录
编译器和ffmpeg CPU带宽位不统一,编译器是32位,但是ffmpeg库是64位的,导致如下undefined reference
错误
D:\workspace\cpp\build-cppx-Desktop_Qt_5_15_2_MinGW_32_bit-Debug/../cppx/main.cpp:11: undefined reference to `av_log_set_level'
D:\workspace\cpp\build-cppx-Desktop_Qt_5_15_2_MinGW_32_bit-Debug/../cppx/main.cpp:12: undefined reference to `av_log'
D:\workspace\cpp\build-cppx-Desktop_Qt_5_15_2_MinGW_32_bit-Debug/../cppx/main.cpp:13: undefined reference to `av_version_info'
D:\workspace\cpp\build-cppx-Desktop_Qt_5_15_2_MinGW_32_bit-Debug/../cppx/main.cpp:13: undefined reference to `av_log'
解决办法
把编译器改为64位就好了
划重点:
Qt左侧“项目”》“Build&Run”下 ,选择 MinGW 64-bit即可解决!