Qt多媒体变更#
将Qt多媒体迁移到Qt 6。
Qt 6是精心努力使框架更加高效和易于使用的成果。
我们尝试在每次发布中保持所有公共API的二进制和源代码兼容性。但在努力使得Qt成为一个更好的框架时,一些变化是不可避免的。
此模块已经进行了重大重构,并改变了分类,从基本到附加。Qt 6中的Qt多媒体模块取代了Qt 5.x中的Qt多媒体模块。使用Qt 5的Qt多媒体的现有代码可进行有限的迁移。
Qt 6的新功能#
Qt多媒体有许多新功能
QMediaCaptureSession
类是媒体捕获的中心对象。
QMediaRecorder
类现在是一个仅限于音频和视频记录的类。它处理捕获会话产生的数据的编码。使用
QMediaFormat
和QMediaRecorder
,在记录时设置所需的编码已发生重大变化。现在您还可以监视捕获会话记录的音频。
已添加在播放媒体文件时选择音频、视频和字幕轨道的功能。
QAudioDecoder
现在支持所有平台。
移除的功能#
移除的功能
注意事项或建议的替代方案
QMediaPlayer
中的播放列表
QMediaPlayer
在Qt 6中不再执行任何播放列表处理。QMediaPlayList
此类已从API中移除。然而,它在媒体播放器示例中仍存在。
QAudioProbe和QVideoProbe
音频和视频探测API已被移除。
QAudioRecorder
请使用
QMediaCaptureSession
或CaptureSession QML类型。使用 MediaPlayer QML 类型。
QMediaObject 和 QMediaBindableInterface
这些类已被删除,以支持更直接的 API 来设置对象之间的连接,例如,使用 setVideoOutput 和
QMediaCaptureSession
来设置。QCameraViewFinderSettings
此类已被删除。使用
QCameraFormat
定义相机应使用的分辨率和帧率。QMediaContent
该类已被删除。请使用 QUrl 代替来处理单个媒体文件。
QSound
请使用
QSoundEffect
代替。QVideoFilterRunnable
请在 QML 中使用着色器效果,或者在 C++ 中访问
QVideoFrame
的内容。公共后端 API
Qt 6 中,Qt Multimedia 的后端 API 是私有的。这提高了支持新多媒体用例的响应时间。在 Qt 5 中,任何类名包含“Control”或“Abstract”等单词的类现在是 Qt 6 中的私有类。
后端插件
Qt 6 中的 Qt Multimedia 不再使用后端插件基础结构。这意味着用户不再需要将其应用程序与这些后端一起分发。相反,用于的后端在编译时基于底层操作系统确定。Qt 在 Linux 上使用 gstreamer,在 Windows 上使用 WMF,在 macOS 和 iOS 上使用 AVFoundation,在 Android 上使用 Android 多媒体 API。
变更的功能##
Qt Multimedia 中提供的一些类的变更可能会影响之前编写的代码。以下表格突出显示这些更改。
更改的功能
说明
处理相机分辨率和帧率
处理方式已简化,引入了一个新的
QCameraFormat
类,以帮助选择正确的相机分辨率和帧率。C++ 侧的视频输出处理已发生重大变化。
已用
QVideoSink
类替换了 QAbstractVideoSurface,并且通用渲染支持得到增强,涵盖了 Qt Multimedia 支持的所有 像素格式。元数据类型
QMediaMetaData
已发生重大变化:主要是从基于字符串的密钥迁移到基于枚举的密钥,并减少了支持的密钥集合,以使其能在大多数平台上得到支持。编码媒体格式和媒体记录器的设置发生了显著变化。Qt 5提供了一个基于字符串的API,一个独立的文件格式,以及音频和视频编解码器分为三类。然而,Qt 6在
QMediaFormat
类中统一了格式。额外的设置可以直接在QMediaRecorder
中指定。现在使用枚举实现文件格式和编解码器的设置,不再使用字符串。这限制了可用的编解码器集,但有助于提供一致的多平台API。QCameraImageCapture更名为
QImageCapture
None
音频输入和输出
QMediaPlayer
和QMediaCaptureSession
(以及相应的QML类型MediaPlayer和CaptureSession)默认情况下没有连接到任何音频设备。请明确地将它们连接到QAudioInput
/ AudioInput或QAudioOutput
/ AudioOutput以捕获或播放音频。捕捉视频
默认情况下,捕获会话未连接到相机。将其连接到
QCamera
对象(相机项目)以能够捕捉视频或静态图像。