Qt Multimedia

Qt 6 的改动是有意识地使框架更高效、更易用的结果。

我们尝试在每个版本中保持所有公共 API 的二进制和源代码兼容性。但为了使 Qt 成为一个更好的框架,一些改动是不可避免的。

模块已进行了重大重构,并改变了分类,从基本模块变为附加模块。Qt 6 中的Qt Multimedia 模块取代了 Qt 5.x 中的Qt Multimedia 模块。使用 Qt 5 中Qt Multimedia 的现有代码只需少量工作即可移植。

Qt 6 中的新功能

Qt Multimedia 中有许多新功能:

  • QMediaCaptureSession 类是媒体捕获的中心对象。
  • QMediaRecorder class 现在是一个仅限于录制音频和视频的类。它处理捕获会话中产生的数据编码。
  • 使用QMediaFormatQMediaRecorder ,在录制时设置所需的编码发生了很大变化。
  • 现在还可以监控捕获会话录制的音频。
  • 新增了在播放媒体文件时选择音频、视频和字幕轨道的支持。
  • QAudioDecoder 现在,所有平台都支持 "音频"、"视频 "和 "字幕"。

删除的功能

已删除的功能备注或建议的替代方案
中的播放列表QMediaPlayerQMediaPlayer 在 Qt 6 中不再处理任何播放列表。
QMediaPlayList该类已从 API 中删除。但它作为媒体播放器示例的一部分仍然存在。
QAudioProbe 和 QVideoProbe音频和视频探测 API 已删除。
QAudioRecorder使用QMediaCaptureSessionCaptureSession QML 类型。
音频 QML 类型使用MediaPlayer QML 类型。
QMediaObject 和 QMediaBindableInterface这些类已被删除,转而使用更直接的 API 来设置对象之间的连接,例如使用 setVideoOutput 和QMediaCaptureSession
QCameraViewFinderSettings该类已被删除。请使用QCameraFormat 定义摄像机应使用的分辨率和帧频。
QMediaContent该类已被删除。单个媒体文件请使用QUrl
QSound使用QSoundEffect 代替。
QVideoFilterRunnable使用 QML 中的着色器效果,或用 C++ 访问QVideoFrame 的内容。
公共后端 APIQt Multimedia 的后端 API 在 Qt XML 6 中是私有的。这改进了支持新多媒体用例的响应时间。在 Qt 5 中类名中包含 "Control"(控制)或 "Abstract"(抽象)字样的任何类现在在 Qt 6 中都是私有的。
对 Linux 上 ALSA 音频的支持是试验性的Linux 上的音频需要 PulseAudio。未来的 Qt 版本将不再支持试验性 ALSA。有关详情,请参阅Linux 平台说明

已更改的功能

Qt Multimedia 中以前提供的一些类的更改可能会影响以前编写的代码。下表重点介绍了这些更改。

更改的功能注释
处理摄像机分辨率和帧频简化了对这些问题的处理,一个新的QCameraFormat 类可帮助为摄像机选择正确的分辨率和帧频。
C++ 端的视频输出处理有了很大改动。QAbstractVideoSurface 已被QVideoSink 类取代,通用渲染支持已得到增强,以涵盖Qt Multimedia 支持的所有像素格式
元数据类型QMediaMetaData 已发生重大变化:主要是从基于字符串的键转为基于枚举的键,并将支持的键集减少到大多数平台都能支持的键。
QMediaFormat编码媒体的格式处理和媒体录制器的设置也发生了重大变化。Qt 5 提供了基于字符串的 API、分离的文件格式以及分为三类的音频和视频编解码器。不过,Qt XML 6 将格式统一到了QMediaFormat 类中。其他设置直接在QMediaRecorder 中指定。文件格式和编解码器的设置现在使用枚举实现,不再使用字符串。这对可使用的编解码器集造成了一些限制,但有助于提供一致的跨平台 API。
QCameraImageCapture 更名为QImageCapture
音频输入和输出QMediaPlayer 和 (以及相应的 QML 类型 和 )默认不连接任何音频设备。要捕获或播放音频,请将它们明确连接到 / 或 / 。QMediaCaptureSession MediaPlayer CaptureSession QAudioInputAudioInput QAudioOutputAudioOutput
捕获视频捕获会话默认未连接到摄像机。将其连接到QCamera 对象(摄像机项目),就能捕捉视频或静态图像。

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.