一、前言
本想者,编译msvc版本的和mingw版本一样,不会消耗太多时间,没想遇到了问题,花费了一点时间,特此记录下
二、准备
1.操作系统win10 64位
2.请自行安装VS2019,并选择C++相关库,笔者使用的是社区版VS2019
3.请自行安装Qt5.15.2(msvc2019_64)
3.下载ffmpeg预编译库,当前也可以自己下载源码后,自己编译
笔者下载地址:
https://sourceforge.net/projects/avbuild/files/windows-desktop/
下载地址不唯一,但注意要下载win系统下,64位库的,否则无法使用
4.下载qtav源码
git clone https://github.com/wang-bin/QtAV.git
cd QtAV && git submodule update --init
建议执行至少一次git submodule update --init,以防后续编译失败
二、编译库
1.ffmpeg预编译库和QtAV源码解压到同一目录中
2.使用Qtcreator打开QtAV.pro,选择MSVC2019 64-bit
切换到Release
3.设置环境变量
如下图所示,修改下环境变量
将已编译好的ffmpeg包中的include、lib、bin路径,加入到各变量的最前面,注意变量间使用“;”进行分隔
4.修改源码
找到ffmpeg包源码include/libavutil/common.h
使用编译器打开,加入如下代码
# define INT64_MAX INT64_C( 9223372036854775807)
# define INT64_MIN (-INT64_C( 9223372036854775807)-1)
5.直接编译即可,示例也可以直接切换、运行
编译完成后,执行下编译目录下的sdk_install.bat,就可以将需要的库安装到Qt目录中
三、遇到的问题
1.Checking for avutil... no
检查下,编译第3步,加入目录的部分是否正确或ffmpeg库是否可用,若仍然未解决,参考问题2
2.上一问题环境变量设置正确,仍然提示Checking for avutil... no
到编译目录,找到config.log,查看日志内容,发现如下
解决方法: 找到ffmpeg包源码include/libavutil/common.h
使用编译器打开,在头部加入如下代码
# define INT64_MAX INT64_C( 9223372036854775807)
# define INT64_MIN (-INT64_C( 9223372036854775807)-1)
3.示例player和QMLPlayer测试时,可以正常播放本地文件和rtmp流,但无法播放rtsp流
目前已解决,请参考https://blog.csdn.net/aggs1990/article/details/117886438