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

2024-01-19 10:52

本文主要是介绍QtAV:基于Qt和FFmpeg的跨平台高性能音视频播放框架,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一.简介

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播放汪汪队的效果如下: 

这篇关于QtAV:基于Qt和FFmpeg的跨平台高性能音视频播放框架的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/622189

相关文章

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

C++如何通过Qt反射机制实现数据类序列化

《C++如何通过Qt反射机制实现数据类序列化》在C++工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作,所以本文就来聊聊C++如何通过Qt反射机制实现数据类序列化吧... 目录设计预期设计思路代码实现使用方法在 C++ 工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作。由于数据类

Python结合PyWebView库打造跨平台桌面应用

《Python结合PyWebView库打造跨平台桌面应用》随着Web技术的发展,将HTML/CSS/JavaScript与Python结合构建桌面应用成为可能,本文将系统讲解如何使用PyWebView... 目录一、技术原理与优势分析1.1 架构原理1.2 核心优势二、开发环境搭建2.1 安装依赖2.2 验

Qt中QGroupBox控件的实现

《Qt中QGroupBox控件的实现》QGroupBox是Qt框架中一个非常有用的控件,它主要用于组织和管理一组相关的控件,本文主要介绍了Qt中QGroupBox控件的实现,具有一定的参考价值,感兴趣... 目录引言一、基本属性二、常用方法2.1 构造函数 2.2 设置标题2.3 设置复选框模式2.4 是否

QT进行CSV文件初始化与读写操作

《QT进行CSV文件初始化与读写操作》这篇文章主要为大家详细介绍了在QT环境中如何进行CSV文件的初始化、写入和读取操作,本文为大家整理了相关的操作的多种方法,希望对大家有所帮助... 目录前言一、CSV文件初始化二、CSV写入三、CSV读取四、QT 逐行读取csv文件五、Qt如何将数据保存成CSV文件前言

Qt中QUndoView控件的具体使用

《Qt中QUndoView控件的具体使用》QUndoView是Qt框架中用于可视化显示QUndoStack内容的控件,本文主要介绍了Qt中QUndoView控件的具体使用,具有一定的参考价值,感兴趣的... 目录引言一、QUndoView 的用途二、工作原理三、 如何与 QUnDOStack 配合使用四、自

Qt spdlog日志模块的使用详解

《Qtspdlog日志模块的使用详解》在Qt应用程序开发中,良好的日志系统至关重要,本文将介绍如何使用spdlog1.5.0创建满足以下要求的日志系统,感兴趣的朋友一起看看吧... 目录版本摘要例子logmanager.cpp文件main.cpp文件版本spdlog版本:1.5.0采用1.5.0版本主要

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

Python+PyQt5实现多屏幕协同播放功能

《Python+PyQt5实现多屏幕协同播放功能》在现代会议展示、数字广告、展览展示等场景中,多屏幕协同播放已成为刚需,下面我们就来看看如何利用Python和PyQt5开发一套功能强大的跨屏播控系统吧... 目录一、项目概述:突破传统播放限制二、核心技术解析2.1 多屏管理机制2.2 播放引擎设计2.3 专