이 페이지에서

QScreenCapture Class

이 클래스는 화면을 캡처하는 데 사용됩니다. 더 보기...

헤더: #include <QScreenCapture>
CMake: find_package(Qt6 REQUIRED COMPONENTS Multimedia)
target_link_libraries(mytarget PRIVATE Qt6::Multimedia)
qmake: QT += multimedia
다음 버전부터: Qt 6.5부터
QML에서: ScreenCapture
상속: QObject

공개 유형

enum Error { NoError, InternalError, CapturingNotSupported, CaptureFailed, NotFound }

속성

공개 함수

QMediaCaptureSession *captureSession() const
QScreenCapture::Error error() const
QString errorString() const
bool isActive() const
std::optional<qreal> maximumFrameRate() const
QScreen *screen() const
void setMaximumFrameRate(std::optional<qreal> frameRate)
void setScreen(QScreen *screen)

공개 슬롯

void setActive(bool active)
void start()
void stop()

신호

void activeChanged(bool)
void errorChanged()
void errorOccurred(QScreenCapture::Error error, const QString &errorString)
void maximumFrameRateChanged()
void screenChanged(QScreen *)

상세 설명

이 클래스는 화면을 캡처합니다. 이 클래스는 ` QMediaCaptureSession ` 클래스에 의해 관리되며, 캡처된 화면은 비디오 미리보기 객체에 표시되거나 파일로 기록될 수 있습니다.

다음 코드 예제는 기본 화면을 캡처하고 그 결과를 QVideoWidget 에 표시하는 방법을 보여줍니다:

QMediaCaptureSession session;
QScreenCapture screenCapture;
session.setScreenCapture(&screenCapture);

QVideoWidget videoWidget;
session.setVideoOutput(&videoWidget);
videoWidget.show();

// With no screen set, the primary screen is captured once capturing starts.
screenCapture.start();

화면 캡처 제한 사항

Qt 6.5.2 이상 버전에서는 QScreenCapture 사용 시 다음과 같은 제한 사항이 적용됩니다:

  • FFmpeg 백엔드에서만 지원됩니다.
  • 일부 플랫폼에서는 캡처된 화면 내용이 변경되지 않는 동안 새로운 비디오 프레임이 출력되지 않습니다. 따라서 애플리케이션은 요청된 프레임 속도로 프레임이 지속적으로 전송될 것이라고 가정해서는 안 됩니다.
  • Wayland 컴포지터를 사용하는 Linux 시스템에서 화면 캡처 구현은 실험적 단계이며 다음과 같은 제한 사항이 있습니다. Wayland 프로토콜의 제한으로 인해 QScreenCapture 클래스의 API를 통해 대상 화면을 설정하거나 가져올 수 없습니다. 대신, ` QScreenCapture::setActive(true)`를 호출하면 OS에서 화면 선택 마법사를 표시합니다. 화면 캡처 기능을 사용하려면 XDG Desktop Portal 및 PipeWire (0.3)를 통해 지원되는 ScreenCast 서비스가 설치되어 있어야 합니다. 이러한 제한 사항은 향후 변경될 수 있습니다.
  • Android를 제외한 모바일 운영 체제에서는 지원되지 않습니다. Android에서 화면 캡처를 사용하려면 AndroidManifest.xml 파일에 추가적인 Android 포그라운드 서비스 권한을 추가해야 합니다:
    <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>
  • EGLFS가 탑재된 임베디드 환경에서는 기능이 제한됩니다. Qt Quick 애플리케이션의 경우, 해당 클래스는 현재 QQuickWindow::grabWindow 를 통해 구현되어 있어 성능 문제가 발생할 수 있습니다.
  • 대부분의 경우, 화면 캡처 프레임 속도를 화면 재생 빈도와 동일하게 설정하지만, Windows의 경우 프레임 속도가 유연하게 조정될 수 있습니다. 이러한 프레임 속도(75/120 FPS)는 캡처되는 화면의 해상도가 4K인 경우 성능이 낮은 CPU에서 성능 문제를 일으킬 수 있습니다. EGLFS에서는 캡처 프레임 속도가 현재 30 FPS로 고정되어 있습니다.

QWindowCapture 및 QMediaCaptureSession도 참조하십시오 .

멤버 유형 문서

enum QScreenCapture::Error

QScreenCapture 클래스에서 발생시킬 수 있는 오류 코드를 나열합니다. ` errorString()`는 오류 원인에 대한 자세한 정보를 제공합니다.

상수값설명
QScreenCapture::NoError0오류 없음
QScreenCapture::InternalError1내부 화면 캡처 드라이버 오류
QScreenCapture::CapturingNotSupported2캡처가 지원되지 않음
QScreenCapture::CaptureFailed4화면 캡처에 실패했습니다
QScreenCapture::NotFound5선택한 화면을 찾을 수 없음

속성 설명

active : bool

이 속성은 캡처 기능이 현재 활성화되어 있는지 여부를 나타냅니다.

액세스 함수:

bool isActive() const
void setActive(bool active)

알림 신호:

void activeChanged(bool)

start() 및 stop()도 참조하십시오 .

[read-only] error : Error

이 속성은 마지막 오류의 코드를 저장합니다.

액세스 함수:

QScreenCapture::Error error() const

알림 신호:

void errorChanged()

[read-only] errorString : QString

이 속성은 오류 원인을 설명하는 사람이 읽을 수 있는 문자열을 포함합니다.

액세스 함수:

QString errorString() const

알림 신호:

void errorChanged()

[since 6.12] maximumFrameRate : std::optional<qreal>

이 속성은 화면 캡처 프레임 속도의 상한값을 지정합니다.

이 속성을 설정하면 디스플레이 재생 빈도 등을 기준으로 기본 설정된 캡처 프레임 속도를 재정의할 수 있지만, 화면 캡처는 가변적인 속도로 프레임을 생성하므로 상한값으로만 적용됩니다. 이 값을 디스플레이 재생 빈도보다 높게 설정하는 것은 권장되지 않으며 오류가 발생할 수 있습니다.

이 속성에 대한 변경 사항은 QScreenCapture 가 다음에 활성화될 때 적용됩니다.

이 열거형은 Qt 6.12에서 도입되었습니다.

액세스 함수:

std::optional<qreal> maximumFrameRate() const
void setMaximumFrameRate(std::optional<qreal> frameRate)

Notifier 신호:

void maximumFrameRateChanged()

screen : QScreen*

이 속성은 캡처할 화면을 지정합니다.

null QScreen 이 설정된 경우, QScreenCapture 인스턴스가 활성화되면 QGuiApplication::primaryScreen 가 선택됩니다.

액세스 함수:

QScreen *screen() const
void setScreen(QScreen *screen)

알림 신호:

void screenChanged(QScreen *)

QGuiApplication::screens() 및 QGuiApplication::primaryScreen()도 참조하십시오 .

멤버 함수 문서

QMediaCaptureSession *QScreenCapture::captureSession() const

이 ` QScreenCapture `가 연결된 캡처 세션을 반환합니다.

QMediaCaptureSession::setScreenCapture()를 사용하여 화면 캡처를 세션에 연결하십시오.

[signal] void QScreenCapture::errorChanged()

이 신호는 error 또는 errorString 속성이 변경될 때 발생합니다.

동일한 오류가 여러 번 발생하더라도 이 신호는 발생하지 않습니다. 이러한 오류를 추적하려면 errorOccurred 신호를 사용하십시오.

참고: error 및 errorString 속성에 대한알림 신호입니다.

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

error 가 발생하면, errorString 와 함께 신호를 보냅니다.

[slot] void QScreenCapture::start()

screen 의 캡처를 시작합니다.

이는 active 속성을 true로 설정하는 것과 동일합니다.

[slot] void QScreenCapture::stop()

캡처 중지를 수행합니다.

이는 ` active ` 속성을 `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.