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
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を介してターゲット画面を設定および取得することはできません。代わりに、QScreenCapture::setActive(true) を起動すると、OSは画面選択ウィザードを表示します。画面キャプチャ機能を使用するには、XDG Desktop Portalおよび {https://pipewire.org/}{PipeWire} (0.3) を介してサポートされるScreenCastサービスのインストールが必要です。これらの制限は将来変更される可能性があります。
  • Android 以外のモバイル OS ではサポートされていません。Android での Screen Capture は、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 を介して実装されているため、パフォーマンス上の問題が発生する可能性があります。
  • ほとんどの場合、画面のリフレッシュ・レートに等しい画面キャプチャ・フレーム・レートを設定します。このようなフレームレート(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)

[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)

errorString とともに、error の発生を知らせる。

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