QScreenCapture Class
Diese Klasse wird für die Erfassung eines Bildschirms verwendet. Mehr...
Kopfzeile: | #include <QScreenCapture> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Multimedia) target_link_libraries(mytarget PRIVATE Qt6::Multimedia) |
qmake: | QT += multimedia |
Seit: | Qt 6.5 |
In QML: | ScreenCapture |
Vererbt: | QObject |
Öffentliche Typen
enum | Error { NoError, InternalError, CapturingNotSupported, CaptureFailed, NotFound } |
Eigenschaften
- active : bool
- error : const Error
- errorString : const QString
- screen : QScreen*
Öffentliche Funktionen
QMediaCaptureSession * | captureSession() const |
QScreenCapture::Error | error() const |
QString | errorString() const |
bool | isActive() const |
QScreen * | screen() const |
void | setScreen(QScreen *screen) |
Öffentliche Slots
Signale
void | activeChanged(bool) |
void | errorChanged() |
void | errorOccurred(QScreenCapture::Error error, const QString &errorString) |
void | screenChanged(QScreen *) |
Ausführliche Beschreibung
Die Klasse nimmt einen Bildschirm auf. Sie wird von der Klasse QMediaCaptureSession verwaltet, wo der erfasste Bildschirm in einem Videovorschauobjekt angezeigt oder in einer Datei aufgezeichnet werden kann.
QMediaCaptureSession session; QAudioInput audioInput; session.setAudioInput(&input); QMediaRecorder recorder; session.setRecorder(&recorder); recorder.setQuality(QMediaRecorder::HighQuality); recorder.setOutputLocation(QUrl::fromLocalFile("test.mp3")); recorder.record();
Einschränkungen für Screen Capture
Unter Qt 6.5.2 und höher gelten die folgenden Einschränkungen für die Verwendung von QScreenCapture:
- Es wird nur mit dem FFmpeg Backend unterstützt.
- Auf Linux-Systemen, die den Wayland-Compositor verwenden, ist die Screen-Capture-Implementierung experimentell und unterliegt den folgenden Einschränkungen. Aufgrund von Einschränkungen des Wayland-Protokolls ist es nicht möglich, den Zielbildschirm über die API der Klasse
QScreenCapture
zu setzen und abzurufen. Stattdessen zeigt das Betriebssystem beim Aufruf vonQScreenCapture::setActive(true)
einen Bildschirmauswahl-Assistenten an. Die Bildschirmaufnahmefunktion erfordert die Installation des ScreenCast-Dienstes, der über XDG Desktop Portal und {https://pipewire.org/}{PipeWire} (0.3) unterstützt wird. Diese Einschränkungen können sich in Zukunft ändern. - Sie wird auf mobilen Betriebssystemen nicht unterstützt, außer auf Android. Für Screen Capture auf Android muss der Datei
AndroidManifest.xml
eine zusätzliche Berechtigung für den Android-Vordergrunddienst hinzugefügt werden:<manifest ...> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION" /> <application ...> <service android:name="org.qtproject.qt.android.multimedia.QtScreenCaptureService" android:foregroundServiceType="mediaProjection" android:exported="false"/> </service> </application> </manifest>
- Auf eingebetteten Systemen mit EGLFS ist die Funktionalität eingeschränkt. Für Qt Quick -Anwendungen wird die Klasse derzeit über QQuickWindow::grabWindow implementiert, was zu Leistungsproblemen führen kann.
- In den meisten Fällen legen wir eine Bildwiederholrate für die Bildschirmaufnahme fest, die der Bildwiederholrate entspricht, außer unter Windows, wo die Rate flexibel sein kann. Eine solche Bildrate (75/120 FPS) kann auf schwachen CPUs zu Leistungsproblemen führen, wenn der erfasste Bildschirm eine 4K-Auflösung hat. Bei EGLFS ist die Erfassungsbildrate derzeit auf 30 FPS festgelegt.
Siehe auch QWindowCapture und QMediaCaptureSession.
Dokumentation der Mitgliedstypen
enum QScreenCapture::Error
Zählt die Fehlercodes auf, die von der Klasse QScreenCapture gemeldet werden können. errorString() liefert detaillierte Informationen über die Fehlerursache.
Konstante | Wert | Beschreibung |
---|---|---|
QScreenCapture::NoError | 0 | Kein Fehler |
QScreenCapture::InternalError | 1 | Interner Bildschirmaufzeichnungstreiberfehler |
QScreenCapture::CapturingNotSupported | 2 | Capturing wird nicht unterstützt |
QScreenCapture::CaptureFailed | 4 | Bildschirmerfassung fehlgeschlagen |
QScreenCapture::NotFound | 5 | Ausgewählter Bildschirm nicht gefunden |
Eigenschaft Dokumentation
active : bool
Diese Eigenschaft gibt an, ob die Aufzeichnung gerade aktiv ist.
Zugriffsfunktionen:
bool | isActive() const |
void | setActive(bool active) |
Melder-Signal:
void | activeChanged(bool) |
[read-only]
error : const Error
Diese Eigenschaft enthält den Code des letzten Fehlers.
Zugriffsfunktionen:
QScreenCapture::Error | error() const |
Benachrichtigungssignal:
void | errorChanged() |
[read-only]
errorString : const QString
Diese Eigenschaft enthält eine von Menschen lesbare Zeichenfolge, die die Fehlerursache beschreibt.
Zugriffsfunktionen:
QString | errorString() const |
Benachrichtigungssignal:
void | errorChanged() |
screen : QScreen*
Diese Eigenschaft hält den Bildschirm für die Aufnahme fest.
Zugriffsfunktionen:
QScreen * | screen() const |
void | setScreen(QScreen *screen) |
Melder-Signal:
void | screenChanged(QScreen *) |
Member Function Dokumentation
QMediaCaptureSession *QScreenCapture::captureSession() const
Gibt die Aufnahmesitzung zurück, mit der diese QScreenCapture verbunden ist.
Verwenden Sie QMediaCaptureSession::setScreenCapture(), um die Kamera mit einer Sitzung zu verbinden.
[signal]
void QScreenCapture::errorOccurred(QScreenCapture::Error error, const QString &errorString)
Signalisiert, wenn eine error auftritt, zusammen mit der errorString.
[slot]
void QScreenCapture::start()
Startet die Bildschirmaufnahme.
[slot]
void QScreenCapture::stop()
Stoppt die Bildschirmaufnahme.
© 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.