QtAV:基于Qt和FFmpeg的跨平台高性能音视频播放框架

news/2024/11/28 0:45:36/

目录

一.简介

1.特性

2.支持的平台

3.简单易用的接口

二.编译

1.下载依赖包

2.开始编译

2.1克隆

2.2修改配置文件

2.3编译

三.试用


一.简介


官网地址:http://www.qtav.org/
Github地址:https://github.com/wang-bin/QtAV

1.特性

●支持大部分播放功能
●播放、暂停、播放速度、快进快退、字幕、音量、声道、音轨、动态渲染器切换、视频均衡器、帧上和渲染器上的自定义滤镜、网络流、裁减、一个视频多渲染器、GPU硬件解码等... 由于使用 FFmpeg, QtAV 可以支持几乎所有格式而不需要安装其他解码器。
●ASS 字幕,正确渲染 ASS 字幕样式
●多重字幕
●实时预览
●高清高帧率视频
●多平台 GPU 硬件解码
●Android MediaCodec 解码 + 零拷贝渲染
●DXVA2 HEVC 硬件解码
●CUDA 支持 Windows、Linux. 性能最好的CUDA解码和渲染
●CUDA Hi10P 硬解
●较新的 NVIDIA 显卡已经支持 10bit H.264 解码。性能超越了其他任何播放器。
●OpenGL、OpenGL ES2 渲染 10bit 视频

2.支持的平台

QtAV 可以运行于 Windows桌面、Windows Phone、Linux、OSX、iOS、Android、MeeGo、Sailfish OS。 其他平台比如 BlackBerry 也会支持,但是缺少开发环境和测试设备。

3.简单易用的接口

下面的例子演示了如何将QtAV应用于QtWidget和QML中
●用于QtWidget

#include <QtAV>
#include <QtAVWidgets>
...
GLWidgetRenderer2 renderer;
renderer.show();
AVPlayer player;
player.setRenderer(&renderer);
player.play("test.avi");

●用于QML

import QtQuick 2.0
import QtAV 1.6
Item {VideoOutput2 {anchors.fill: parentsource: player}AVPlayer { //or MediaPlayerid: playersource: "test.mp4"}MouseArea {anchors.fill: parentonClicked: player.play()}
}

二.编译

1.下载依赖包

编译QtAV需要FFmpeg和OpenAL, 先去https://sourceforge.net/projects/qtav/files/depends/下载依赖包。

解压缩之后,里面有构建时需要用到的头文件和库,分别在include、lib和bin目录下。

2.开始编译

官方编译指导:https://github.com/wang-bin/QtAV/wiki/Build-QtAV

2.1克隆

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

将QtAV克隆到QtAV-depends-windows-x86+x64同级目录

2.2修改配置文件

用记事本打开源码中的.qmake.conf文件,在最后添加依赖包的头文件和库文件

INCLUDEPATH += $$PWD/../QtAV-depends-windows-x86+x64/include
LIBS += -L$$PWD/../QtAV-depends-windows-x86+x64/lib/x64

2.3编译

注意这里配置的是64位环境,所以Qt也要用64位的
用Qt Creator打开源码中的QtAV.pro文件,编译无报错,下面是我用的套件。

三.试用

编译目录下的QMLPlayer.exe是一个完整的播放器,功能齐全,把界面稍微美化一下就能打造一个属于自己的播放器啦。


用QMLPlayer.exe播放汪汪队的效果如下: 


http://www.ppmy.cn/news/1324964.html

相关文章

C#根据 App.config 文件中的配置信息去查找并加载指定目录下的 DLL

C#根据 App.config 文件中的配置信息去查找并加载指定目录下的 DLL System.IO.FileNotFoundException:“未能加载文件或程序集“AliNPOIExcel, Version1.0.0.0, Cultureneutral, PublicKeyTokennull”或它的某一个依赖项。系统找不到指定的文件。” 如何让程序识别不同目录下…

Spring MVC学习之——Controller类中方法的返回值

Controller类中方法的返回值 1.返回ModelAndView RequestMapping("/hello")public ModelAndView hello(){//封装了页面和数据ModelAndView view new ModelAndView();//对这个请求的页面添加属性&#xff08;数据&#xff09;view.addObject("hello",&quo…

【面试合集】说说你对 shell 的理解?常见的命令?

面试官&#xff1a;说说你对 shell 的理解&#xff1f;常见的命令&#xff1f; 一、是什么 Shell 是一个由c语言编写的应用程序&#xff0c;它是用户使用 Linux 的桥梁。Shell 既是一种命令语言&#xff0c;又是一种程序设计语言 它连接了用户和Linux内核&#xff0c;让用户能…

使用Python实现MySQL数据库的查询,有录播直播私教课视频教程

查询所有 from mysql.db_object import Databasedb Database(host"localhost",password"zhangdapeng520",database"zdppy_mysql_demo")# 创建表 table "test_user" sql """ create table test_user(id bigint prim…

美易平台:美股盘前,热门中概股多数上涨

美股盘前&#xff0c;热门中概股多数上涨&#xff0c;蔚来涨超4%&#xff0c;哔哩哔哩、富途控股、贝壳涨超2%&#xff0c;爱奇艺、理想汽车涨近2%。美股大型科技股普涨&#xff0c;AMD涨3%&#xff0c;苹果、英伟达涨近2%。 在美国股市盘前交易中&#xff0c;热门的中概股表现…

libcurl是一个用于进行网络通信的开源库,提供了各种功能和选项,可以用于发送和接收HTTP请求、FTP操作等

libcurl libcurl是一个用于进行网络通信的开源库&#xff0c;提供了各种功能和选项&#xff0c;可以用于发送和接收HTTP请求、FTP操作、SMTP邮件等。它支持多种协议&#xff0c;包括HTTP、HTTPS、FTP、FTPS、SMTP、POP3、IMAP等。 以下是libcurl库的一些特点和功能&#xff1…

【QA】Linux-CentOS-解决mysqlclient无法安装

文章目录 文章概述解决方式1&#xff1a;直接找到mysqlclient的whl安装包python3.8-x86-64位其他适配版本的whl安装包 解决方法2&#xff1a;先安装相关依赖&#xff0c;再单独安装mysqlclient解决方式3&#xff1a;根据错误信息找到根源&#xff0c;一步一步解决 文章概述 li…

OpenAI 公布2024选举虚假信息打击计划

据统计&#xff0c;2024 年预计将有 50 多个国家举行大选&#xff0c;虚假信息的威胁成为人们关注的焦点。 人工智能聊天机器人 ChatGPT 和图像生成器 DALL-E 的开发商 OpenAI 近日宣布了一项新的措施&#xff0c;以防止在今年大选之前再次出现虚假信息滥用和误导事件。 本周…