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

news/2024/7/10 22:20:20 标签: qt, ffmpeg, 音视频, QtAV

目录

一.简介

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: parent
        source: player
    }
    AVPlayer { //or MediaPlayer
        id: player
        source: "test.mp4"
    }
    MouseArea {
        anchors.fill: parent
        onClicked: 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.niftyadmin.cn/n/5339879.html

相关文章

框架概述和MyBatis环境搭建

学习视频&#xff1a;1001 框架概述_哔哩哔哩_bilibili 目录 框架概述 1.1为什么要学 1.2框架的优点 1.3 当前主流框架 Spring框架 Spring MVC框架 MyBatis框架 ​编辑 Spring Boot框架 Spring Cloud框架 1.4 传统JDBC的劣势 MyBatis 2.1 MyBatis概述 ORM框架工作原…

贪心算法-01:跳跃游戏

关于贪心算法 贪心算法是动态规划的一个特例&#xff0c;相对于动态规划&#xff0c;使用贪心算法需要满足更多条件&#xff0c;但是效率比动态规划要高。 贪心选择的性质就是&#xff1a;每一步都做出一个局部最优解&#xff0c;最终的结果就是全局最优。不过这是一种特殊性…

题记(22)--计算表达式

目录 一、题目内容 二、输入描述 三、输出描述 四、输入输出示例 五、完整C语言代码 一、题目内容 对于一个不存在括号的表达式进行计算 二、输入描述 存在多组数据&#xff0c;每组数据一行&#xff0c;表达式不存在空格 三、输出描述 输出结果 四、输入输出示例 输入&am…

服务器或服务器主板中的BIOS更新详解

BIOS更新总共有三种方式&#xff1a;DOS、UEFI Shell以及BMC网页更新&#xff0c;而其中&#xff0c;DOS与Shell的更新方式类似&#xff0c;因此以下为统一描述。 一、UEFI Shell或DOS下更新 当我们下载了官网的BIOS更新包并解压后可以获得一些更新文件&#xff0c;在更新文件…

el-date-picker如果超过限制跨度则提示

需求&#xff1a;实现日期时间选择组件跨度如果超过限制天数&#xff0c;点击查询则提示超过限制时间 封装一个方法&#xff0c;传入开始和结束时间以及限制天数&#xff0c;如果超过则返回false //计算时间跨度是否超过限制天数isTimeSpanWithinLimit(startTime, endTime, li…

rancher和k8s接口地址

Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的容器中&#xff0c;然后发布到任何流行的 Linux/Windows/Mac 机器上。容器镜像正成为一个新的标准化软件交付方式。为了能够获取到 Docker 容器的运行状态&#xff0c;用户可以…

赛氪受邀参加安徽省翻译协会2023年年会

安徽省翻译协会于近日在合肥成功举办2023年年会暨学术研讨会。本次会议旨在服务党和国家工作大局&#xff0c;广泛汇聚翻译界力量&#xff0c;推动翻译行业高质量发展&#xff0c;同时总结一年来我省翻译界成果&#xff0c;谋划明年工作。 安徽省翻译协会2023年年会暨学术研讨会…

轻松打卡:使用Spring Boot和Redis Bitmap构建高效签到系统【redis实战 四】

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 轻松打卡&#xff1a;使用Spring Boot和Redis Bitmap构建高效签到系统【redis实战 四】 引言(redis实战)前言回顾bitmap基本概念核心特性使用场景 为什么使用redis中的bitmap实现&#xff1f;1. 存储效…