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 } |
속성
- active : bool
- error : const Error
- errorString : const QString
- screen : QScreen*
공용 기능
QMediaCaptureSession * | captureSession() const |
QScreenCapture::Error | error() const |
QString | errorString() const |
bool | isActive() const |
QScreen * | screen() const |
void | setScreen(QScreen *screen) |
공용 슬롯
신호
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로 고정되어 있습니다.
QWindowCapture 및 QMediaCaptureSession 을참조하세요 .
회원 유형 문서
enum QScreenCapture::Error
QScreenCapture 클래스에서 시그널링할 수 있는 오류 코드를 열거합니다. errorString()는 오류 원인에 대한 자세한 정보를 제공합니다.
상수 | 값 | 설명 |
---|---|---|
QScreenCapture::NoError | 0 | 오류 없음 |
QScreenCapture::InternalError | 1 | 내부 화면 캡처 드라이버 오류 |
QScreenCapture::CapturingNotSupported | 2 | 캡처가 지원되지 않습니다. |
QScreenCapture::CaptureFailed | 4 | 화면 캡처에 실패했습니다. |
QScreenCapture::NotFound | 5 | 선택한 화면을 찾을 수 없습니다. |
속성 문서
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.