이 페이지에서

ScreenCapture QML Type

이 유형은 화면 캡처를 하는 데 사용됩니다. 더 보기...

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

속성

신호

방법

상세 설명

ScreenCapture는 화면을 캡처합니다. 이 기능은 CaptureSession 에서 관리되며, 캡처된 화면은 비디오 미리보기 객체에 표시되거나 파일로 기록될 수 있습니다.

아래 코드는 ScreenCapture를 사용하여 캡처된 기본 화면 보기를 VideoOutput 에서 재생하는 간단한 캡처 세션을 보여줍니다.

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]
    }
}

ScreenCapture의 제한 사항

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

  • 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로 고정되어 있습니다.

WindowCapture 및 CaptureSession도 참조하십시오 .

속성 설명서

active : bool

캡처가 현재 활성화되어 있는지 여부를 나타냅니다.

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

error : enumeration [read-only]

마지막 오류의 코드를 반환합니다.

상수설명
ScreenCapture.NoError오류 없음
ScreenCapture.InternalError내부 화면 캡처 드라이버 오류
ScreenCapture.CapturingNotSupported캡처가 지원되지 않음
ScreenCapture.CaptureFailed화면 캡처에 실패했습니다
ScreenCapture.NotFound선택한 화면을 찾을 수 없음

errorString : string [read-only]

오류 원인을 설명하는 사람이 읽기 쉬운 문자열을 반환합니다.

maximumFrameRate : real [since 6.12]

화면 캡처 프레임 속도의 상한값입니다.

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

-1로 설정하면 플랫폼에 따라 달라지는 기본값이 사용됩니다.

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

이 속성은 Qt 6.12에서 도입되었습니다.

screen : Screen

캡처할 화면을 설명합니다.

Screen 가 null로 설정된 경우, ScreenCapture 인스턴스가 활성화되면 기본 화면이 선택됩니다.

Application.screens도 참조하십시오 .

Signal 문서

errorChanged()

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

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

참고: 이에 해당하는핸들러는 onErrorChanged 입니다.

errorOccurred(int error, string errorString)

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

error 매개변수에 대해 전달할 수 있는 값은 error 의 열거형 표를 참조하십시오.

참고: 해당 핸들러는 onErrorOccurred 입니다.

error도 참조하십시오 .

메서드 문서

void start()

screen 의 캡처를 시작합니다.

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

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