QScreenCapture 类

该类用于捕获屏幕画面。 更多...

头文件 #include <QScreenCapture>
CMakefind_package(Qt6 REQUIRED COMPONENTS Multimedia)
target_link_libraries(mytarget PRIVATE Qt6::Multimedia)
qmakeQT += multimedia
Qt 6.5
由以下类实例化 ScreenCapture
继承 QObject

公共类型

枚举Error { NoError, InternalError, CapturingNotSupported, CaptureFailed, NotFound }

属性

公共函数

QMediaCaptureSession *captureSession() const
QScreenCapture::Errorerror() const
QStringerrorString() const
boolisActive() const
QScreen *screen() const
voidsetScreen(QScreen *screen)

公共槽函数

voidsetActive(bool active)
voidstart()
voidstop()

信号

voidactiveChanged(bool)
voiderrorChanged()
voiderrorOccurred(QScreenCapture::Error error, const QString &errorString)
voidscreenChanged(QScreen *)

详细说明

该类捕获屏幕画面。它由QMediaCaptureSession类管理,在视频预览对象或文件中显示捕获的屏幕画面。

QMediaCaptureSession session;
QAudioInput audioInput;
session.setAudioInput(&input);
QMediaRecorder recorder;
session.setRecorder(&recorder);
recorder.setQuality(QMediaRecorder::HighQuality);
recorder.setOutputLocation(QUrl::fromLocalFile("test.mp3"));
recorder.record();

屏幕捕获限制

在 Qt 6.5.2 及以上版本中,针对 QScreenCapture 的以下限制适用

  • 仅支持 FFmpeg 后端。
  • 由于 Wayland 协议限制和限制,不支持 Linux 上的 Wayland 合成器。
  • 不支持在移动操作系统上运行,除了在Android上。在那里,由于当前通过QScreen::grabWindow实现,这在该用例中不是最佳的,您可能会遇到性能问题。
  • 在集成EGLFS的情况下,功能有限。对于Qt Quick应用程序,该类目前通过QQuickWindow::grabWindow实现,这可能导致性能问题。
  • 在大多数情况下,我们设置屏幕捕获帧率与屏幕刷新率相等,但在Windows上,这个率可能灵活。这种帧率(75/120帧/秒)可能会在弱CPU上引起性能问题,如果捕获的屏幕是4K分辨率。在EGLFS上,捕获帧率目前锁定为30帧/秒。

另见 QWindowCaptureQMediaCaptureSession

成员类型文档

枚举 QScreenCapture::Error

枚举由 QScreenCapture 类可发送的错误代码。 errorString() 提供了有关错误原因的详细信息。

常量描述
QScreenCapture::NoError0无错误
QScreenCapture::InternalError1内部屏幕捕获驱动程序错误
QScreenCapture::CapturingNotSupported2不支持捕获
QScreenCapture::CaptureFailed4屏幕捕获失败
QScreenCapture::NotFound5选定的屏幕未找到

属性文档

active : bool

此属性表示是否当前正在激活捕获。

访问函数

boolisActive() const
voidsetActive(bool active)

通知信号

voidactiveChanged(bool)

[只读] error : const Error

此属性包含最后一个错误的代码。

访问函数

QScreenCapture::Errorerror() const

通知信号

voiderrorChanged()

[只读] errorString : const QString

此属性包含描述错误原因的易读字符串。

访问函数

QStringerrorString() const

通知信号

voiderrorChanged()

screen : QScreen*

此属性包含用于捕获的屏幕。

访问函数

QScreen *screen() const
voidsetScreen(QScreen *screen)

通知信号

voidscreenChanged(QScreen *)

成员函数文档

QMediaCaptureSession *QScreenCapture::captureSession() const

返回此 QScreenCapture 连接到的捕获会话。

使用 QMediaCaptureSession::setScreenCapture() 将相机连接到会话。

[信号] void QScreenCapture::errorOccurred(QScreenCapture::Error error, const QString &errorString)

当发生错误时发出信号,以及错误字符串。

[槽] void QScreenCapture::start()

开始屏幕捕获。

[slot] void QScreenCapture::stop()

停止屏幕录制。

© 2024 The Qt Company Ltd. 本文档中的文档贡献归各所有者所有版权。提供的文档受 GNU自由文档许可证版本1.3 的条款约束,由自由软件基金会发布。Qt及其相关标志是The Qt Company Ltd.在芬兰以及全球其他国家的商标。所有其他商标均为其各自所有者的财产。