Auf dieser Seite

ScreenCapture QML Type

Dieser Typ wird zur Bildschirmaufnahme verwendet. Mehr...

Import Statement: import QtMultimedia
Since: Qt 6.5
In C++: QScreenCapture

Eigenschaften

Signale

Methoden

Ausführliche Beschreibung

ScreenCapture erfasst einen Bildschirm. Die Verwaltung erfolgt über CaptureSession, wo der erfasste Bildschirm in einem Video-Vorschauobjekt angezeigt oder in einer Datei gespeichert werden kann.

Der folgende Code zeigt eine einfache Aufnahmesitzung, bei der ScreenCapture die aufgenommene Ansicht des primären Bildschirms in „ VideoOutput “ wiedergibt.

CaptureSession {
    id: captureSession
    screenCapture: ScreenCapture {
        id: capture
        active: true
    }
    videoOutput: VideoOutput {
        id: videoOutput
    }

    Component.onCompleted: {
        // Select the screen to capture. If no screen is set, the primary
        // screen is captured by default.
        const screens = Application.screens
        if (screens.length > 0)
            capture.screen = screens[0]
    }
}

Einschränkungen bei ScreenCapture

Ab Qt 6.5.2 gelten für die Verwendung von ScreenCapture folgende Einschränkungen:

  • Es wird nur mit dem FFmpeg-Backend unterstützt.
  • Auf einigen Plattformen werden keine neuen Videobilder ausgegeben, solange der aufgenommene Bildschirminhalt unverändert bleibt. Anwendungen sollten sich daher nicht darauf verlassen, einen kontinuierlichen Strom von Bildern mit der angeforderten Bildrate zu erhalten.
  • Auf Linux-Systemen, die den Wayland-Compositor verwenden, ist die Bildschirmaufnahme-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 ` festzulegen und abzurufen. Stattdessen zeigt das Betriebssystem beim Aufruf von ` QScreenCapture::setActive(true)` einen Assistenten zur Bildschirmauswahl an. Die Bildschirmaufnahmefunktion erfordert die Installation des ScreenCast-Dienstes, der über das XDG Desktop Portal und PipeWire (0.3) unterstützt wird. Diese Einschränkungen können sich in Zukunft ändern.
  • Auf mobilen Betriebssystemen wird diese Funktion nicht unterstützt, mit Ausnahme von Android. Für die Bildschirmaufnahme unter 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 Embedded-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 Bildrate für die Bildschirmaufnahme fest, die der Bildwiederholfrequenz des Bildschirms entspricht – außer unter Windows, wo die Bildrate flexibel sein kann. Eine solche Bildrate (75/120 FPS) kann auf schwachen CPUs zu Leistungsproblemen führen, wenn die aufgenommene Bildschirmaufnahme eine 4K-Auflösung hat. Bei EGLFS ist die Bildaufnahme-Bildrate derzeit auf 30 FPS festgelegt.

Siehe auch WindowCapture und CaptureSession.

Dokumentation zu den Eigenschaften

active : bool

Gibt an, ob die Erfassung derzeit aktiv ist.

Siehe auch „ start “ () und „ stop “ ().

error : enumeration [read-only]

Gibt den Code des letzten Fehlers zurück.

KonstanteBeschreibung
ScreenCapture.NoErrorKein Fehler
ScreenCapture.InternalErrorInterner Fehler des Bildschirmaufnahme-Treibers
ScreenCapture.CapturingNotSupportedBildschirmaufnahme wird nicht unterstützt
ScreenCapture.CaptureFailedBildschirmaufnahme fehlgeschlagen
ScreenCapture.NotFoundAusgewählter Bildschirm nicht gefunden

errorString : string [read-only]

Gibt eine für Menschen lesbare Zeichenfolge zurück, die die Fehlerursache beschreibt.

maximumFrameRate : real [since 6.12]

Die Obergrenze für die Bildrate bei Bildschirmaufnahmen.

Dieser Wert kann festgelegt werden, um die standardmäßig verwendete Bildaufnahmerate – die sich beispielsweise nach der Bildwiederholfrequenz des Bildschirms richtet – zu überschreiben, jedoch nur als Obergrenze, da die Bildschirmaufnahme Bilder mit variabler Bildrate erzeugt. Es wird nicht empfohlen, diesen Wert höher als die Bildwiederholfrequenz des Bildschirms einzustellen, da dies zu Fehlern führen kann.

Bei dem Wert -1 wird ein plattformabhängiger Standardwert verwendet.

Änderungen an dieser Eigenschaft werden erst beim nächsten Aktivieren des „ ScreenCapture “ übernommen.

Diese Eigenschaft wurde in Qt 6.12 eingeführt.

screen : Screen

Beschreibt den Bildschirm, der erfasst werden soll.

Wenn „ Screen “ auf „null“ gesetzt ist, wird der primäre Bildschirm ausgewählt, sobald die Instanz „ ScreenCapture “ aktiviert wird.

Siehe auch „ Application.screens “.

Signal-Dokumentation

errorChanged()

Dieses Signal wird ausgelöst, wenn die Eigenschaften „ error “ oder „ errorString “ geändert werden.

Dieses Signal wird nicht ausgelöst, wenn mehrere identische Fehler auftreten. Um solche Fehler zu verfolgen, verwenden Sie das Signal „ errorOccurred “.

Hinweis: Der entsprechende Handler lautet „ onErrorChanged “.

errorOccurred(int error, string errorString)

Gibt bei Auftreten eines „ error “ einen Fehler zurück, zusammen mit dem Parameter „ errorString “.

Informationen zu den möglichen Werten, die an den Parameter „error“ übergeben werden können, finden Sie in der Aufzählungstabelle unter error.

Hinweis: Der entsprechende Handler ist „ onErrorOccurred “.

Siehe auch „ error “.

Methodendokumentation

void start()

Beginnt mit der Erfassung des „ screen “.

Dies entspricht der Einstellung der Eigenschaft „ active “ auf „ true “.

void stop()

Beendet die Aufzeichnung.

Dies entspricht der Einstellung der Eigenschaft „ active “ auf „ false “.

© 2026 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.