超级简单的跨平台高性能音视频播放框架QtAv编译指南
一、了解QtAv
这几天抱着试一试的心态,尝试着了解了下QtAv这个库,感觉确实挺不错的,因此就打算学习下这个库。
断断续续的看了不少文章,大多数都是通过百度搜索出来的文章。说实话百度上大多数文章内容都差不多,而且很少有文章说清楚了编译时的环境配置和编译器上的区别,导致我自己也一度认为这个库很难编译。其实真的不难
网上的资源真的很多,但是有点儿杂乱,新手上来一看可能很容易就懵逼了。可是我这里要告诉大家,真的不需要害怕,这个库的编译真的炒鸡简单,不信看我第三小节开始的编译步骤,简单到不敢相信。
因为我看到了windows编译qtav这篇文章,文章中清楚的说明了环境变量配置是需要根据编译器进行选择设置的,这时自己的思路也一下子就开阔了。
我这里使用的是QtCreator编辑器,编译器使用的是是MSVC,是vs2013的编译器。所以头文件需要配置到Include上,库文件需要配置到Lib目录上。
如果是gcc的编译器,配置才可能像下边这样。这个我没有测试,因为我自己是msvc环境,不过网上这么多人说了,估计应该也没啥问题。这也是为啥我开头说网上资源乱,因为我看的大多数是Mingw集成环境下的文章。
CPATH : C:\Users\Administrator\Desktop\QtAV-depends-windows-x86+x64\QtAV-depends-windows-x86+x64\include
LIBRARY_PATH : C:\Users\Administrator\Desktop\QtAV-depends-windows-x86+x64\QtAV-depends-windows-x86+x64\lib
首先说明我的编译环境:
- Qt版本:Qt5.7.1
- 编译器:vs2013上的MSVC编译器
- 编辑工具:QtCreator 4.2,其实跟这个关系不大,只是一个ide而已,我们使用的编译器仍然是微软的msvc编译器。
- 系统:Win10 64位
重点强调下,windows编译qtav这篇文章一定要看,内容真的很实用。主要是告诉你在编译前期,msvc和gcc两种编译器下,怎么去配置环境变量。
二、相关文章
编译步骤:Qt5.5.0编译QtAV
不同编译器下环境变量配置:windows编译qtav
我自己是看着Qt5.5.0编译QtAV这篇文章进行编译的,最起码资源都是在文章中的连接里下载的,包括QtAv源码和依赖库QtAV-depends-windows-x86+x64
但是参考这篇文章中配置环境变量时,一定要注意,这篇文章中的作者是GCC编译器。而我们自己去要根据自己的编译环境来配置环境变量,如果你是MINGW集成环境,也就是说你是GCC编译器,那么恭喜你,直接按原文配置即可。
但是,如果你不是GCC编译器,那么你就需要看windows编译qtav
这篇文章,他会告诉你,其他编译器怎么配置环境变量
MSVC编译器,配置方法如下。把头文件和库文件分别配置在Include和LIB目录上。
如果是gcc的编译器,需要把头文件和库文件分别配置在CPATH和LIBTRARY_PATH环境变量上。
三、下载QtAv源码
源码下载时直接上官方的github即可,QtAv
四、下载QtAv依赖库
由于QtAv是基于ffmpeg开发的,因此我们需要下载相关依赖库。QtAV-depends-windows-x86+x64
五、设置环境变量
根据不同编译器设置方法不一样,具体参看windows编译qtav这篇文章
1、gcc设置方式
CPATH : C:\Users\Administrator\Desktop\QtAV-depends-windows-x86+x64\QtAV-depends-windows-x86+x64\include
LIBRARY_PATH : C:\Users\Administrator\Desktop\QtAV-depends-windows-x86+x64\QtAV-depends-windows-x86+x64\lib
2、msvc(cl)设置方式
图中环境变量列表中加粗的字即是我添加的环境变量,msvc编译器下INCLUDE和LIB这个两个变量本身就是存在的,所以我们只需要在值那一列把include和lib目录添加上即可。
注意:需要添加自己的QtAV-depends-windows-x86+x64依赖库路径
六、编译
环境变量配置好之后,直接点击构建即可,编译成功后,效果如下
七、测试
编译完成之后,我们会发现bin目录下会有很多可执行文件,这个时候我们可以执行其中某一个可执行文件对我们编译的库进行测试。
首先拷贝QtAv的依赖库ffmpeg,找到之前解压的QtAV-depends-windows-x86+x64文件夹,把里边的bin目录下的资源文件都拷贝到我们刚才编译出来的QtAv目录下。
找到我们刚才编译生成的bin目录,打开里边的simpleplayer.exe可执行程序。选择一个本地的资源文件进行播放,效果图可能如下图所示,这里是只放了一张图,主要作为示意。
到这里,我们的QtAv就编译完成了。
后续有时间我会尝试使用这个库,然后做更进一步的分析
![]() |
![]() |
很重要--转载声明
本站文章无特别说明,皆为原创,版权所有,转载时请用链接的方式,给出原文出处。同时写上原作者:朝十晚八 or Twowords
如要转载,请原文转载,如在转载时修改本文,请事先告知,谢绝在转载时通过修改本文达到有利于转载者的目的。
超级简单的跨平台高性能音视频播放框架QtAv编译指南的更多相关文章
- Ajaxupload插件超级简单使用(php的ci框架)
Ajaxupload简单使用 友情提示:1.蓝色文字为必修改内容.2.#字符后面是解释该代码段的主要内容 备注: 该实例是用php的ci框架直接接收图片并 ...
- Chimee - 简单易用的H5视频播放器解决方案
Chimee是由奇舞团开源的一套H5视频播放器解决方案,由奇舞团视频云前端团队结合在业务和视频编解码方向的沉淀积累倾心打造.Chimee支持MP4.M3U8.FLV等多种媒体格式,同时它也帮我们解决了 ...
- Notyf - 超级简单、响应式的 JS 通知插件
通知是网站的常用功能之一,可以用来显示消息.通告.提示等等.Notyf 是一款超级简单.响应式的 JS 通知插件,不依赖 jQuery 库,可以独立使用.赶紧试用一下吧! 在线演示 免费下载 ...
- Pyqt 音视频播放器
在寻找如何使用Pyqt做一个播放器时首先找到的是openCV2 openCV2 貌似太强大了,各种关于图像处理的事情它都能完成,如 读取摄像头.图像识别.人脸识别. 图像灰度处理 . 播放视频等,强 ...
- 新手入门:目前为止最透彻的的Netty高性能原理和框架架构解析
1.引言 Netty 是一个广受欢迎的异步事件驱动的Java开源网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端. 本文基于 Netty 4.1 展开介绍相关理论模型,使用场景,基本组件 ...
- Netty高性能原理和框架架构解析
1.引言 Netty 是一个广受欢迎的异步事件驱动的Java开源网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端. 本文基于 Netty 4.1 展开介绍相关理论模型,使用场景,基本组件 ...
- OHSCE_V0.1.22 Beta,跨平台高可靠性通信框架
Open HI-REL Signal Communication Engine(简称OHSCE)是一款高可靠性跨平台的PHP通信框架,Windows友好且同时支持Linux和OS X.对TCP.UDP ...
- Android音视频之MediaPlayer音视频播放
前言: 昨天总结了视频录制,今天来学习一下视频的播放,Android的视频播放主要采用MediaPlayer类. MediaPlayer介绍 MediaPlayer类可用于控制音频/视频文件或流的播放 ...
- 转:最简单的基于 DirectShow 的视频播放器
50行代码实现的一个最简单的基于 DirectShow 的视频播放器 本文介绍一个最简单的基于 DirectShow 的视频播放器.该播放器对于初学者来说是十分有用的,它包含了使用 DirectSho ...
随机推荐
- openCV2马拉松第18圈——坐标变换
计算机视觉讨论群162501053 转载请注明:http://blog.csdn.net/abcd1992719g 收入囊中 仿射变换 坐标映射 利用坐标映射做一些效果,例如以下 watermark/ ...
- python(4)- 简单练习:python实现购物车的优化
购物车程序优化题目要求: 1. 用户退出时打印商品列表时,按以下格式 -------您购买的商品如下------ id 商品 数量 单价 总价 1 iPhone 2 ...
- PHP中的$_SERVER['PATH_INFO']
PHP中的全局变量$_SERVER['PATH_INFO']是一个很有用的参数,众多的CMS系统在美化自己的URL的时候,都用到了这个参数. 对于下面这个网址: http://www.test.com ...
- POJ 2480 Longge's problem 积性函数
题目来源:id=2480" style="color:rgb(106,57,6); text-decoration:none">POJ 2480 Longge's ...
- jquery设置多个css样式
$(selector).css({property:value, property:value, ...}) 实例: $("p").css({ "color": ...
- IE浏览器 get请求缓存问题
场景: 比较简单是使用的SpringMVC框架,在做资源国际化的时候,遇到了这个问题.具体做的操作是在页面上点击切换语言的时候,需要发起请求在Controller中切换Locale. 问题: 1.开始 ...
- Struts2中的OGNL表达式
一.OGNL表达式简介 OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个开源项目.所谓对象图,即以任意一个对象为根,通过OGNL可以访问 ...
- final、finally、三个关键字的区别
一 final 如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承.因此一个类不能既被声明为 abstract的,又被声明为final的.将变量或方法声明为final,可以 ...
- jvm -Xms -Xmx
1 -Xms -X表示这是一个“-X”参数,m即memory,s即start,这个是jvm初始可以使用的整个堆的大小. 2 -Xmx x表示max,jvm最大可以使用的整个堆的大小. 3 oracle ...
- AndroidPageObjectTest_ByAllPossible.java
以下代码使用ApiDemos-debug.apk进行测试 //这个脚本用于演示PageFactory的功能:使用注解@AndroidFindAll定位元素.注解用法参考页面类代码. package c ...