Qt Multimedia

"image of multimedia icons, courtesy of misirlou from the Noun Project"

Qt Multimedia 是提供一组丰富 QML 类型和 C++ 类来处理多媒体内容的附件模块。它包含用于回放音频和视频文件并在屏幕上渲染这些文件的易于使用的 API,及用于从系统摄像头和麦克风录制音频和视频的综合 API。

该模块功能分为下列子模块:

Qt Multimedia 提供多媒体特定使用案例 API。
Qt Multimedia Widgets 提供基于 Widgets 的多媒体 API。

快速入门

若要从 Qt 5 移植到 Qt 6,见 Qt Multimedia 的变化 .

若是 Qt Multimedia 新手,QML 类型可以 imported 进应用程序使用以下语句在 .qml 文件。

import QtMultimedia
					

若想要在应用程序中使用 C++ 类,包括 C++ 定义使用以下指令:

#include <QtMultimedia>
#include <QtMultimediaWidgets>
					

注意: 若正在使用来自此模块的一些类,推荐仅包括那些特定类而不是模块。

要链接到 C++ 库,添加以下到工程 CMakeLists.txt 文件。代入 my_project 采用工程名称。

find_package(Qt6 COMPONENTS Multimedia REQUIRED)
target_link_libraries(my_project PUBLIC Qt::Multimedia)
					

QML 类型

下表提纲了一些重要 QML 类型。

类型 描述
MediaPlayer 将音频/视频回放功能添加到场景。
CaptureSession 创建用于捕获音频/视频的会话。
Camera 访问连接到系统的摄像头。
AudioInput 访问连接到系统的音频输入 (麦克风)。
AudioOutput 访问连接到系统的音频输出 (扬声器、耳机)。
VideoOutput 显示视频内容。
MediaRecorder 录制音频/视频从 CaptureSession .
ImageCapture 从摄像头捕获静止图像。
Video 将视频回放功能添加到场景。使用 MediaPlayer and VideoOutput 类型以提供视频回放功能。

C++ 类

下表提纲了一些重要 C++ 类

描述
QMediaPlayer 从源回放媒体。
QVideoWidget 显示来自媒体播放器 (或捕获会话) 的视频。
QMediaCaptureSession 捕获音频/视频。
QCamera 访问连接到系统的摄像头
QAudioInput 访问连接到系统的音频输入 (麦克风)。
QAudioOutput 访问连接到系统的音频输出 (扬声器、耳机)。
QImageCapture 以摄像头捕获静止图像。
QMediaRecorder 从捕获会话录制媒体内容。
QVideoSink 访问和渲染单个视频帧。
QAudioSink 将原生音频数据发送给音频输出设备。

对于回放 QMediaPlayer , QAudioOutput 和 QVideoOutput 包含所有要求功能。其它类用于捕获音频和视频内容,其中 QMediaCaptureSession 是管理整个捕获/录制过程的中心类。

许可和归属

Qt Quick Multimedia 模块在商业许可下是可用的来自 Qt 公司 。此外,它在自由软件许可下也是可用的。从 Qt 5.6 起,这些自由软件许可是 GNU LGPL (次一般公共许可) 第 3 版 ,或 GNU GPL (一般公共许可) 第 2 版 。见 Qt 许可 进一步了解细节。

指南

平台注意事项

对于大多数特征,Qt Multimedia 构建于底层操作系统的多媒体框架之上。因此,有几种基于不同技术和 API 的多媒体后端。

虽然我们试着在所有平台支持我们的完整 API,但在一些地方仍存在平台特定局限性。这是由于那些框架支持的特征集有所不同,意味着某些功能可能不可用于所有平台。这对于支持的文件格式和编解码器,及高级摄像头功能而言尤其如此。

若存在局限性,我们的目标是在各自的类和方法中文档化这些局限性。

参考

范例