QtAV的编译与使用(MSVC2015+Qt5.9.8)
0.前言
本文主要是记录QtAV的编译及使用过程,在MSVC2015-2019搭配Qt5.9-5.12这个版本范围内使用过,没有出现编译错误或编译出来的动态库无法使用的情况。
《门前》----顾城
... 草在结它的种子
风在摇它的叶子
我们站着,不说话
就十分美好 ...
本文目录
1.准备工作
2.编译
3.简单使用
4.参考
1.准备工作
QtAV的源码
下载链接:https://github.com/wang-bin/QtAV
git clone https://github.com/wang-bin/QtAV.git
cd QtAV && git submodule update --init
FFmpeg库
(其实可以用作者编译好的,如果环境和版本符合要求的话,地址http://sourceforge.net/projects/qtav/files/depends)
下载链接:https://ffmpeg.zeranoe.com/builds/
需要下载shared运行依赖库和dev开发依赖库,我下的4.1.3-windows32bit的,因为我编译器是msvc2015-32bit。把ffmpeg的库下下来后,解压,然后将库文件放到Qt的环境中去。
将xxx-dev\include下所有文件,拷贝到Qt环境的include下(如:D:\Qt\Qt5.9.8\5.9.8\msvc2015\include)。
将xxx-dev\lib下所有lib,拷贝到Qt环境的lib下(如:D:\Qt\Qt5.9.8\5.9.8\msvc2015\lib)。
因为我要在Qt里调试,所以把xx-shared\bin下的文件也拷贝到Qt目录下(如:D:\Qt\Qt5.9.8\5.9.8\msvc2015\bin)。
2.编译
其实编译挺简单的,不过我试了好几次才成功的编译出能用的。
用QtCreator打开QtAV.pro工程文件,直接构建就行了。我先构建的debug版本(出了点小问题),然后又构建的release版本一切正常,我又再次构建debug版本,这次都是正常的了。(建议就用默认的影子构建,这样编译出来的东西好找一点)
编译完成后,库在xxx\lib_win_x86文件夹下(如:E:\git_space\build-QtAV-Desktop_Qt_5_9_8_MSVC2015_32bit-Debug\lib_win_x86),示例程序在xxx\bin文件夹下(如:E:\git_space\build-QtAV-Desktop_Qt_5_9_8_MSVC2015_32bit-Debug\bin),不过示例可能需要用windeployqt打一下包,也可能需要把提示缺的库文件拷贝过去。
库文件不用自己拷贝到环境中,点击目录下的sdk_install.bat脚本自动把文件放到对应的目录。(debug和release的我都点了,如果需要重新编译点sdk_uninstall.bat,免得冲突的话还要手动去删之前的文件)
3.简单使用
参考QtAV\examples目录下的例子以及readme的说明构建简单的应用,源码文件夹下xxx\QtAV\doc\UseQtAVinYourProjects-zh_CN.md文档也可以参考。
(一开始我遇到QtAV文件不存在的错误,然后重新编译好几次才正常了,也不知道啥原因)
Widgets中的使用:
(摘自文档)自 QtAV 1.5 基于 QWidget 的渲染器被移到了新模块 QtAVWidgets, 若需要使用这些渲染器比如 OpenGLWidgetRenderer,在pro工程文件加入:
QT += avwidgets
C++ 代码中加入:
#include <QtAV>
#include <QtAVWidgets>
因为ui布局文件看起来不方便的原因所以我没把代码完整贴出来,可以参照simpleplayer例子,不过例子中的VideoOutput类型我用不了,会异常结束,我用的VideoRenderer。另外,main.cpp中的registerRenderers可以去掉,貌似没影响。
Qml中的使用:
//QML的话可以不用在pro中添加别的模块
//main.qml
import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.Controls 2.2
import QtAV 1.7Window {id:item_rootvisible: truewidth: 640height: 480title: qsTr("Hello World")color: "gray"VideoOutput2 {id: item_videosource: item_playeranchors.fill: parentanchors.bottomMargin: 30Slider{id:item_slideranchors.left: parent.leftanchors.right: parent.rightanchors.bottom: parent.bottomfrom:0value:0to:1onValueChanged: {if(item_slider.pressed)item_player.seek(item_player.duration*value)//console.log(item_player.duration)}}}MediaPlayer{id:item_player//替换成自己的文件或者网络视频流source: "F:/test.mp4"onPaused: {console.log("----------paused")}onPlaying: {console.log("----------playing")}onStopped: {console.log("----------stopped")}onPositionChanged: {if(!item_slider.pressed)item_slider.value=position/durationconsole.log("----------buffer position",position)}}Row{anchors.left: parent.leftanchors.bottom: parent.bottomanchors.margins: 2height: 30spacing: 2Button{anchors.verticalCenter: parent.verticalCenterwidth: 60height: 26text: "play"onClicked: {console.log("-------------play clicked")item_player.play()}}Button{anchors.verticalCenter: parent.verticalCenterwidth: 60height: 26text: "pause"onClicked: {console.log("-------------pause clicked")item_player.pause()}}Button{anchors.verticalCenter: parent.verticalCenterwidth: 60height: 26text: "stop"onClicked: {console.log("-------------stop clicked")item_player.stop()item_slider.value=0}}}
}
效果如下:
到此,编译与基本的使用也就走完一遍了,剩下的就是摸索这个库,进行定制。
(2019-11-27)今天用 QML 版本打包发布才发现,除了 qml文件夹 下的 QtAV ,还得把 QtAV1.dll 这个动态库一起发布,不然加载失败。
(2020-01-01)在 Win10 上生成的 QML 程序放到 Win7 上,释放组件时程序直接崩溃,并且视频暂停播放音调会停在那里一直响。
4.参考
作者文档:https://github.com/wang-bin/QtAV/wiki/Build-QtAV
博客-编译:https://www.cnblogs.com/motadou/p/9310560.html
博客-编译使用:https://blog.csdn.net/wuchalilun/article/details/74981736
博客-编译使用:https://blog.csdn.net/mccoy39082/article/details/82818716
博客-编译安装:https://blog.csdn.net/qq_36372055/article/details/93380298
QtAV的编译与使用(MSVC2015+Qt5.9.8)相关推荐
- QGIS编译---QGIS3.22.4 + Qt5.15.3 + VS2019 ---64位版本
0 编译结果 先放上编译结果: 图1 QGIS3.22 启动界面 图2 QGIS3.22 操作界面 1 前言 因一些主观.客观原因,一年多没更新博客了,提笔继续. 这是笔者编译的第三个版本QGIS,本 ...
- CTK编译及使用(Qt5.9.9 + MSVC2015_x64 + CMake3.23.1)
目录 环境准备 生成步骤 总结 环境准备 编译环境为:Qt5.9.9 + MSVC2015_x64 + CMake3.23.1 CTK源码下载:https://github.com/c ...
- 桌面排版软件Scribus v1.5.5源码编译,使用VS2017+Qt5.12.7环境
软件官网 Scribus – Open Source Desktop Publishing Scribus Wiki Scribus Forums - Index 官方论坛 WebSVN - Scri ...
- LibreCAD v2.2.0源码编译,使用VS2019+Qt5.12.9+Boost1.71.0环境
零.前言 LibreCAD is a fork of QCAD community edition version 2.0.5.0;therefore, any modifications of or ...
- 太阳神三国杀学习第一步--编译并运行(qt5.7.0+vs2015)
起因: 很早就想寻找一个开源的c++项目进行学习,也在很早就发现了太阳神三国杀这个项目,但是之前在github中下载后总是草草编译一直没有编译成功过,最近又重燃斗志决定深入研究一下. 分析应该 ...
- CentOS8安装Geant4笔记(三):Geant4介绍、编译、安装支持Qt5界面并运行exampleB1例程显示Qt界面
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/123495062 各位读者,知识无穷而人力有穷 ...
- QtAV视频播放器的介绍、编译以及简单使用
背景 简介 QtAV是基于Qt和FFmpeg的多媒体播放库.它可以帮助您以前所未有的精力编写播放器. 强大的功能 QtAV可以满足您的最大需求 硬件解码支持:DXVA2,VAAPI,VDA / Vid ...
- QtAV编译以及使用
前言 本文详细描述Window 10 和Ubuntu 14.04使用Qt Creator编译QtAV 1.12的步骤 1 Windows 1.1 依赖环境 第一种方法: 下载编译好的ffmpeg-3. ...
- Win10/Win7离线搭建Qt5.12+MinGW/MSVC2015开发环境
三种Qt开发环境方案 Win10搭建Qt + Clion 版本选择与开发环境方案 Qt5.12.8 + Clion/QtCreator + MinGW:无法使用MSVC编译的lib库 Qt5.12.8 ...
最新文章
- 2007年100款最佳安全工具谱
- 波士顿动力机器人齐秀舞姿,这是要成团出道?
- 第三天2017/03/30(下午:二级指针的(输出)内存模型)
- winform响应时间最长是多少分钟_史上最短职业赛是多少时间?《王者荣耀》中国队只花了三分钟...
- [BZOJ1726][Usaco2006 Nov]Roadblocks第二短路
- 第四章 纤维结构对染色性能的影响单元测验
- 通用即插即用监视器驱动下载_电脑设备驱动程序有问题,教你3招,快速修复...
- python代码编写_高质量Python代码编写的5个优化技巧
- 集合的洗牌,排序,拆分以及常用遍历方法
- 拓端tecdat|R语言Apriori算法实例——322万知乎用户的关注话题关联分析
- 实战SpringBoot Admin
- 塞班系统是如何没落的
- 一加7pro电脑模式_一加7pro值不值得买?
- 怎样启动模拟器模拟鸿蒙系统,鸿蒙OS 模拟器运行
- The end tag is unbalanced异常
- OSINT + Python = 自定义黑客
- Sqli-labs 基本注入篇 (Less1~22)
- 和平精英灵敏度分享码服务器没有响应,和平精英灵敏度分享码
- vpb在VS2008下的配置编译
- IE安全系列之——昨日黄花:IE中的ActiveX(I)
热门文章
- java 室内3d_室内地图制作-首款实时室内绘制室内地图-3D室内地图
- python绘制笛卡尔心形线方程_canvas绘制爱心的几种方法
- 17.11.25B组总结
- 如何编写python函数_编写高质量的Python代码系列(二)之函数
- 页面浏览pdf或图片iframe
- 20222817《Linux内核原理与分析》第五周作业
- 转自汇编网: 高三老师给大一学生的一封信(感动!)
- 英菲克I5M_I6M_I7M_I10M-晶晨S805处理器-当贝纯净桌面-线刷固件包
- 如何在计算机查找类型文件类型,怎样在电脑中查找某一类型文件?比如查 txt...
- 如何快速融入团队并成为团队核心(四)