首页| 论坛| 消息

标题:Qt Multimedia in Qt6
作者:liudianwu
日期:2021-08-31 08:38
内容:

### 一、前言
1. Qt 6.2 的第一个测试版刚刚发布,并在多个其他新附加组件中加入了全新的 Qt 多媒体模块。Qt Multimedia 是一个模块,它在 Qt 6 中发生了一些相当大的变化。
2. 在很多方面,它是一个新的 API 和实现,即使我们重新使用了 Qt 5.15 中的一些代码。虽然我们试图为我们的大多数模块保持 Qt 5 和 Qt 6 之间尽可能多的源代码兼容性,但我们不得不在此处进行大量更改以使 API 和实现适合未来,最终决定以最好的为目标API 而不是最大的兼容性。
3. 如果您一直在 Qt 5 中使用 Qt Multimedia,则需要对您的实现进行更改。这篇博文将尝试引导您完成最大的变化,同时查看 API 和内部结构。
### 二、目标
1. Qt 5 中的 Qt 多媒体有一个相当松散定义的范围。不同后端对 API 不同部分的支持并不一致,而且 API 本身的部分也不容易跨平台使用。
2. 对于 Qt 6,我们尝试在一定程度上缩小范围,并致力于开发一组一致的功能,这些功能适用于所有支持的平台。我们还没有达到这个目标,但希望通过 Qt 6.2.0 的发布填补大部分实施空白。
3. 据我们所知,这些功能涵盖了我们用户过去使用 Qt 多媒体的大部分用例。我们的目标是首先关注那些核心用例,并确保它们在我们的所有平台上一致工作,然后再使用新功能扩展模块。
我们希望在 Qt 6.2 中支持的主要用例是:
- 音频和视频播放
- 音频和视频录制(来自相机和麦克风)
- 低级(基于 PCM)音频和音频解码
- 与 Qt Quick 和小部件集成
- 尽量使用硬件加速
### 三、内部架构变化
1. Qt 5 中的 Qt 多媒体具有复杂的基于插件的架构,使用多个插件来实现不同的前端功能。一个完整的多媒体后端实现将包含不少于 4 个插件。用于实现这些插件的后端 API 是公开的,很难调整和改进这些后端的功能。
2. 构建的架构非常难以维护和开发模块。在 Qt6 中,我们选择显着简化这一过程并移除插件基础设施。现在在编译时选择后端并编译到 Qt Multimedia 的共享库中。现在只有一个后端 API 涵盖了所有多媒体,消除了我们在 Qt 5 中人为拆分成多个后端的问题。最后,我们选择将后端 API 设为私有,以便我们将来可以轻松调整和扩展它。
3. 完成后,我们可以仔细查看平台相关后端代码所需的 API 和接口。我们设法将实现多媒体后端所需的类集从 40 个减少到 15 个,并减少了纯虚拟方法的数量,为许多非必要功能提供了后备实现。
4. 新的后端 API 在某种程度上模仿了我们在 Qt Gui 中用于窗口系统集成的 QPA 架构,并且新的QPlatfor ..


#1 [XChinux 09-01 08:34]
音视频录制播放从Qt5升级到Qt6的时候看来得注意下了。

回复 发表
主题 版块