QScreenCapture Class

このクラスは画面をキャプチャするために使用します。詳細...

Header: #include <QScreenCapture>
CMake: find_package(Qt6 REQUIRED COMPONENTS Multimedia)
target_link_libraries(mytarget PRIVATE Qt6::Multimedia)
qmake: QT += multimedia
Since: Qt 6.5
In QML: ScreenCapture
Inherits: 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 ではサポートされていません。このクラスは現在、QScreen::grabWindow を介して実装されているため、このユースケースには最適ではなく、パフォーマンスの問題が発生する可能性があります。
  • 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選択した画面が見つからない

プロパティ Documentation

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

画面キャプチャを停止します。

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。