QtAv初体验

文章讲述了在Windows环境下,使用QtCreator编译和运行QtAV项目时遇到的依赖库缺失和程序崩溃的问题。通过下载QtAV的依赖库,设置环境变量,并将动态链接库复制到正确位置,最终成功运行并播放视频。

github:GitHub - wang-bin/QtAV: A cross-platform multimedia framework based on Qt and FFmpeg. 基于Qt和FFmpeg的跨平台高性能音视频播放框架. Recommand to use new sdk https://github.com/wang-bin/mdk-sdk

学习文章:

 QtAV编译以及使用_anyuliuxing的博客-CSDN博客

 遇到的问题:

有源码,看不懂,跑不起来。

一开始就报错

error: avutil is required, but compiler can not find it

应该是缺少依赖。

我根据人家文章的方法,下载QtAv官方提供的编译好的依赖库并解压。

 

D:\qt-workspace\QtAV-depends-windows-x86+x64

之后在Qt Creator设置编译时候的环境变量

 添加三个变量:

变量                              值

CPATH                         D:\qt-workspace\ffmpeg-3.4.2-win64-dev\include
LD_LIBRARY_PATH    D:\qt-workspace\ffmpeg-3.4.2-win64-dev\lib
LIBRARY_PATH           D:\qt-workspace\ffmpeg-3.4.2-win64-dev\lib
 

 我使用的是mingw 32

所以我的路径是...\lib,如果编译64位,路径是...\lib\x64。(注意这个坑)(我也踩了,本来路径写的...\lib\x64,报错)

之后确实没有错误了,但一运行程序就崩溃了。

xxxxxxx......Player.exe crashed.

这是因为没有添加外部的动态链接库。

我的是32位

D:\qt-workspace\QtAV-depends-windows-x86+x64\bin

 在这里找到对应的dll,复制到运行程序下

D:\Qt\Qt_others\QtAV\build-QtAV-Desktop_Qt_5_9_1_MinGW_32bit-Release\bin

然后就可以跑起来了。 

后面跟着人家安装了QtAV,并简单使用,成功播放视频。

一个我比较迷糊的点(相对路径),记录一下

这两是对应关系,有时候一直放不对地方。 

这个是当前目录:

 

<think> 我们被要求提供关于QtAV的相关信息,包括使用指南、功能介绍、下载等。根据提供的引用,我们可以知道: - 引用[1]提到了QtAV的编译、安装和使用,以及一个具体的代码位置(Pack.cpp中的一段条件编译)。 - 引用[2]则提到了一个名为mdk-sdk的音视频组件,并指出它是原QtAV作者的最新力作,同时对比了QtAV和mdk-sdk。 但是,用户的问题是关于QtAV的,因此我们将重点放在QtAV上,同时可以提及mdk-sdk作为相关项目(因为引用[2]提到mdk-sdk是原QtAV作者的新项目)。 由于引用中提供的信息有限,我们需要结合自己的知识来回答。不过,请注意,作为AI,我的知识截止于2023年,而引用中提到的更新是2023年1112日,因此我们可以认为这些信息是较新的。 QtAV是一个基于QtFFmpeg的多媒体播放库,它提供了丰富的功能,可以用于开发跨平台的多媒体应用程序。 ### 功能介绍 QtAV的主要功能包括: - 支持多种音视频格式(通过FFmpeg)。 - 硬件解码支持(如DXVA2, VAAPI, VDA/VideoToolbox等)。 - 音频输出支持OpenAL, PulseAudio, XAudio2等。 - 提供了QML和Qt Widgets两种界面支持。 - 支持多种渲染方式(如OpenGL、Direct2D、GDI+、XVideo等)。 - 支持字幕(包括SSA/ASS等特效字幕)。 - 支持滤镜(如视频均衡器、旋转、裁剪等)。 ### 下载与安装 QtAV可以从其官方GitHub仓库下载: - GitHub地址:https://github.com/wang-bin/QtAV 安装通常需要先编译源代码。编译步骤大致如下(以Linux为例,其他平台类似): 1. 克隆仓库: ```bash git clone https://github.com/wang-bin/QtAV.git cd QtAV ``` 2. 创建构建目录并进入: ```bash mkdir build cd build ``` 3. 使用qmake生成Makefile(需要确保Qt开发环境已安装): ```bash qmake .. ``` 或者使用cmake(根据README选择): ```bash cmake .. ``` 4. 编译: ```bash make -j4 ``` 5. 安装: ```bash sudo make install ``` 在Windows上,可以使用Visual Studio或MinGW进行编译,步骤类似,但需要设置好FFmpegQt的环境变量。 ### 使用指南 在Qt项目中使用QtAV,需要在项目文件(.pro)中添加: ```qmake CONFIG += QtAV LIBS += -lQtAV ``` 然后在代码中包含头文件: ```cpp #include <QtAV> #include <QtAVWidgets> ``` 一个简单的播放器示例: ```cpp #include <QApplication> #include <QtAV> #include <QtAVWidgets> int main(int argc, char* argv[]) { QApplication a(argc, argv); VideoOutput output; // 视频输出 AVPlayer player; // 播放器核心 player.setRenderer(&output); // 设置渲染器 player.play("test.mp4"); // 播放文件 // 创建窗口显示视频 QWidget window; QVBoxLayout *layout = new QVBoxLayout; layout->addWidget(output.widget()); // 将视频输出添加到窗口 window.setLayout(layout); window.resize(800, 600); window.show(); return a.exec(); } ``` ### 注意事项 - 编译QtAV需要先安装FFmpeg开发库。 - 在Windows上,可以从https://ffmpeg.zeranoe.com/builds/ 下载预编译的FFmpeg开发包,并将其头文件和库文件路径添加到Qt项目中。 ### 相关项目:mdk-sdk 根据引用[2],原QtAV作者开发了新的项目mdk-sdk,它支持更广泛的平台和语言,性能更强。如果用户需要更现代、跨平台支持更好的解决方案,可以考虑mdk-sdk。其GitHub地址为:https://github.com/wang-bin/mdk-sdk ### 总结 QtAV是一个功能强大的多媒体库,适用于开发跨平台的音视频播放应用程序。它依赖于FFmpeg,支持硬件加速解码和多种渲染后端。安装需要通过源码编译,使用则相对简单,集成到Qt项目中即可。 §§相关问题§§ 1. 如何在Windows上编译QtAV? 2. QtAV支持哪些视频格式? 3. 如何用QtAV实现一个简单的视频播放器? 4. QtAV和mdk-sdk有什么区别? </think> ### QtAV 相关信息 #### 1. **基本介绍** QtAV 是一个基于 QtFFmpeg 的跨平台多媒体框架,由开发者 Wang Bin 创建。它提供了高性能的音视频播放、处理功能,支持硬件解码和多种渲染后端: - **核心依赖**:底层封装 FFmpeg 实现解码,结合 OpenGL/DirectX/Vulkan 等渲染技术 - **主要特性**: - 硬件加速解码(DXVA2, VAAPI, NVDEC 等) - 支持 4K/8K 高清视频播放 - 低延迟实时流媒体处理 - 字幕/滤镜/音轨切换等扩展功能 - QML 和 Widgets 双界面支持 [^1][^2] --- #### 2. **获取与安装** - **源码地址**: - GitHub 仓库:https://github.com/wang-bin/QtAV - 最新版需通过 Git 克隆: ```bash git clone https://github.com/wang-bin/QtAV.git ``` - **编译步骤**: 1. 安装依赖:FFmpeg 开发库、Qt5/Qt6 开发环境 2. 配置工程: ```bash cd QtAV qmake -r "CONFIG+=no_examples" # 禁用示例简化编译 make -j4 ``` 3. **关键配置**(引用[1]): > 在 `QtAV-master/src/Pack.cpp` 中需处理 QT 5.15+ 的兼容性修改: ```cpp #if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0) using Qt::hex, Qt::dec; #endif ``` 4. 部署库文件到 Qt 安装目录的 `include` 和 `lib` 路径 --- #### 3. **使用指南** - **基础播放器实现**(C++ 示例): ```cpp #include <QtAV> #include <QtAVWidgets> int main(int argc, char *argv[]) { QApplication app(argc, argv); // 创建播放器核心 QtAV::AVPlayer player; player.setFile("test.mp4"); // 配置视频渲染窗口 QtAV::VideoOutput output; output.widget()->resize(800, 600); output.widget()->show(); player.setRenderer(&output); player.play(); return app.exec(); } ``` - **QML 快速集成**: ```qml import QtAV 1.7 Video { source: "video.mp4" autoPlay: true Renderer { type: Renderer.OpenGL } // 强制硬件加速 } ``` --- #### 4. **进阶功能** - **硬件解码启用**: ```cpp player.setDecoders(QStringList() << "D3D11" << "CUDA"); // 优先级顺序 ``` - **性能优化**: - 启用零拷贝渲染:`player.setZeroCopy(true)` - 多线程帧处理:`player.setAsyncLoad(true)` --- #### 5. **替代方案:mdk-sdk** 根据引用[2],QtAV 作者推出了更现代的继承者 **mdk-sdk**: - **优势对比**: | 特性 | QtAV | mdk-sdk | |--------------|---------------|-----------------------| | 跨平台支持 | Qt绑定 | 原生C++/Flutter/Web等| | 渲染性能 | 优秀 | 极优(Vulkan/Metal) | | 维护状态 | 社区维护 | 作者主动更新(V0.23+)| | 硬解兼容性 | 需手动配置 | 自动探测 | - 项目地址:https://github.com/wang-bin/mdk-sdk --- #### 6. **适用场景** - ✅ **推荐使用 QtAV**: - 已有 Qt 项目快速集成播放器 - 需要兼容旧系统(如 Windows XP) - ✅ **推荐 mdk-sdk**: - 新项目开发 - 需要 Web/移动端多平台支持 - 追求极限性能(如 8K 实时处理) ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

伸头看云朵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值