Qt多媒体模块将在Qt 6.2回归

老牌开发工具Qt的首席技术官兼项目主要维护者Lars Knoll,在项目开发的邮件列表中提到,Qt多媒体(Multimedia)模块新的API和实例,将会整合回开发分支中。这项消息代表该模块有望将会如官方在去年底承诺的一样,于Qt 6.2版本进入该框架。

Qt多媒体模块是Qt从第5版本更新到第6主要更新版本时,被跳过的一个重要模块,多媒体模块提供了一组功能丰富的QML(Qt Markup Language)类型以及C++类别,让开发者能够方便地处理多媒体内容,并且也提供必要的API,供开发者访问摄影机和无线电功能,其内置Qt音频引擎,能够处理3D音效播放和内容管理。官方提到,多媒体模块大概是Qt 5到Qt 6变化最大的模块,他们在Qt 5生命周期维护多媒体模块遇到很大的问题,而且也无法真正的在所有平台提供一致的功能。

官方希望在Qt 6中情况得以改变,为了实现该目标,他们更改了部分公共API,并且重新改造了内部架构,尤其在多媒体连接到特定平台的后端,做了许多改善,除了清理后端API和进行简化之外,现在开发者会在编译的时候选择后端,每个平台也只支持一个后端。架构清理工作简化了程序代码库,该模块从Qt 5.15版本的14万行程序代码,现在降低到7.3万行。

新的Qt多媒体模块具有一个称为QMediaDevices的API,可以用来发现输入和输出设备,并且取得有关上下文变更通知,另一个新添加的QMediaFormat API,则能够用来查询支持的编码器和文件格式。

Lars Knoll提到,这个模块仍然有许多需要修复的问题,但程序代码现在处于良好的状态,其他工作会在整合回开发分支后继续进行。而在Qt 6.2后,多媒体模块将进入功能冻结状态,模块还有一个例外需要处理,特别是在摄影机和媒体捕捉功能,Windows和Android后端仍需要改善。而Linux的gstreamer后端,以及iOS与macOS的AVFoundation,则处在良好的状态。

Qt在去年底的时候,发布了最新的主要更新版本Qt 6.0,该版本加入了许多新功能,包括更新的C++语言结构,并且采用全新图形架构,使得2D与3D开发体验更加一致。

但是这个版本遭到许多开发者抱怨,因为Qt 5.15的许多附加模块,并没有跟着移植到Qt 6.0,并且在1月的时候,官方突然宣布Qt 5.15 LTS进入商用阶段,使得许多免费用户卡在无法使用Qt 5.15 LTS版本,但是Qt 6.0模块不足的尴尬情况。直到最近发布的Qt 6.1,官方才补上许多好用的模块,并预计在6.2继续补上重要的多媒体模块。