QtAV1.13+Qt5.12.0+MSVC2017+Win11编译与使用

1、前言

因项目需要,需要在在项目中添加一个视频播放器,起初采用qmediaplayer实现功能,但在测试过程中发现在播放高帧率、大分辨率视频时,出现明显掉帧现象,故寻找更好的方法,在寻找过程中,发现大佬的QtAV,使用较为简单,故尝试进行编译与使用,此篇文章为本人在编译与踩坑的过程记录。

2、工具准备 

        (1)Git;        //在下载QtAV源码时使用

        (2)Qt 5.12.0;        //编译QtAV时使用

        (3)VS2017;        //编译QtAV时的编译器

3、QtAV编译
        (1)Git下载QtAV源码(目前本人的QtAV版本为1.13)

在文件夹中打开git bash窗口,输入以下代码,通过git 拉取源码

git clone https://github.com/wang-bin/QtAV.git
cd QtAV && git submodule update --init

注意:确认代码下载完全,可以通过重复执行 git submodule update --init --recursive 来保证源码下载完全。

        (2)安装FFMPEG

        由于QtAV依赖于FFMPEG,所以在编译前需要安装FFMPEG,注意FFMPEG版本不要过高,目前本人安装的版本为3.2.2版本,为QtAV官网中的较新版本,以下链接直通下载,下载完成后只需解压即可。Download QtAV-depends-windows-x86+x64.7z (QtAV) (sourceforge.net)icon-default.png?t=N7T8https://sourceforge.net/projects/qtav/files/depends/QtAV-depends-windows-x86%2Bx64.7z/download

FFMPEG安装完成后,将安装目录的bin文件下所在路径添加到系统环境变量Path中

        (3)编译

        1. 注意修改编译器版本,根据使用的需求进行编译器版本的设置,本人后续将会在msvc2017_x64_Release情况下使用QtAV库,所以将编译器调整为该版本。

        2.编译前注意添加环境变量,在Qt中打开QtAV项目,选择左侧标签页的项目页

注:此为GCC编译器的添加,MSVC编译器将CPATH的内容添加到INCLUDE,将LD_LIBRARY_PATH的内容添加到LIB即可,其中,CPATH为FFMPEG安装目录的include文件夹路径LD_LIBRARY_PATH和LIBRARY_PATH为FFMPEG安装目录的lib文件夹路径,如下图。

注意:添加的FFMPEG库的路径,如:本人需要编译x64的QtAV库,所以,需要添加ffmpeg的lib路径为D:\tools\ffmpeg-3.1\lib\x64;
        3. avutil is required, but compiler can not find it
        在root下.qmake.conf添加下载的编译好的ffmpeg库(注意修改为自己的路径):

INCLUDEPATH += D:/tools/ffmpeg-3.1/include
LIBS += -LD:/tools/ffmpeg-3.1/lib/x64 -lavutil -lavformat -lavcodec -lswscale


        4. libavresample or libswresample is required problem问题:
        在root/.qmake/.qmake.conf文件中添加:

CONFIG += no_config_tests
CONFIG+=config_avutil config_avformat config_avcodec config_swscale config_swresample



        5.编译出现QtAV::pixelFormatFromFourcc(int)问题:
        在libQtAV.pro的win32:!winrt部分添加CONFIG *= d3dva

           感谢大佬的分享 ,顺利编译。

QtAV编译遇到的问题-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/m0_38133212/article/details/119154319

        6.编译完成后,播放视频play()闪退问题

        解决方法:查看本文第5章-踩坑中的相关内容。

        (4)编译完成

编译完成后,在打开生成的文件夹,本人为x64_Release版本,其中lib_win_x86_64文件夹为存放QtAV生成的dll与lib文件,bin文件夹为存放自带范例的可执行程序exesdk_install.bat文件为将绝对路径下的QtAV相关文件添加到Qt的安装目录中(是绝对路径,生成后不要移动生成文件夹的位置),sdk_uninstall.bat文件为将QtAV相关文件从Qt的安装目录中删除,所以本人双击运行了sdk_install.bat脚本进行QtAV添加。

4、QtAV的使用

根据QtAV作者的GitHub中的介绍,进行简单的使用:

        (1)设置编译器版本

        注意修改编译器版本,本人是在msvc2017_x64_Release模式下生成的QtAV相关库,所以需要在相同的编译器环境下使用。

        (2).pro文件中使用库

        在Qt+=中添加av 与 avwidgets,(前提:已经运行的QtAV生成文件夹中的sdk_install.bat脚本)

         (3)引入头文件

         (4)运行

5、踩坑 

在编译完成后,在使用过程中,一旦play视频,无论是.mp4还是.avi均出现程序闪退现象,在打开事件查看器查看程序崩溃记录时,发现问题出现在XAudio2_9.dll,查阅多个资料后均无所获,但偶尔在查看到QtAV在Github中的问题反馈时,查看到相似问题,根据大佬的评论调整后,解决问题。我已将评论截图放在下方,原链接如下:

                        ​​​​​​​        ​​​​​​​        Win 10 x64 Xaudio2 崩溃icon-default.png?t=N7T8https://github.com/wang-bin/QtAV/issues/1020

注:本人未直接覆盖替换,而是将原文件重命名后,再将winsdk中的xaudio2文件拷贝进去。 

最后:再次拜谢各位大佬的分享,以上仅为本人在QtAV编译与使用过程中的记录,如有问题,还望指正。

  • 24
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值