QScreenCapture Class

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

Header: #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
QScreen *screen() const
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 screenChanged(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 프로토콜의 제한으로 인해 QScreenCapture 클래스의 API를 통해 대상 화면을 설정하고 가져오는 것은 불가능합니다. 대신 OS에서 QScreenCapture::setActive(true) 을 호출하면 화면 선택 마법사가 표시됩니다. 화면 캡처 기능을 사용하려면 XDG 데스크톱 포털과 {https://pipewire.org/}{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에서는 예외입니다. 캡처한 화면이 4K 해상도인 경우 이러한 프레임 속도(75/120 FPS)는 저사양 CPU에서 성능 문제를 일으킬 수 있습니다. EGLFS에서는 캡처 프레임 속도가 현재 30 FPS로 고정되어 있습니다.

QWindowCaptureQMediaCaptureSession참조하세요 .

회원 유형 문서

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)

[read-only] error : const Error

이 속성에는 마지막 오류의 코드가 저장됩니다.

함수에 액세스합니다:

QScreenCapture::Error error() const

알림 신호:

void errorChanged()

[read-only] errorString : const QString

이 속성에는 오류의 원인을 설명하는 사람이 읽을 수 있는 문자열이 저장됩니다.

함수에 액세스합니다:

QString errorString() const

알림 신호:

void errorChanged()

screen : QScreen*

이 속성에는 캡처할 화면이 저장됩니다.

기능에 액세스합니다:

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

알림 신호:

void screenChanged(QScreen *)

멤버 함수 문서

QMediaCaptureSession *QScreenCapture::captureSession() const

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

QMediaCaptureSession::setScreenCapture()를 사용하여 카메라를 세션에 연결합니다.

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

error 발생 시 신호와 함께 errorString.

[slot] void QScreenCapture::start()

화면 캡처를 시작합니다.

[slot] void QScreenCapture::stop()

화면 캡처를 중지합니다.

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