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 } |
プロパティ
- 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を介してターゲット画面を設定および取得することはできません。代わりに、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::NoError | 0 | エラーなし |
QScreenCapture::InternalError | 1 | 内部スクリーンキャプチャドライバエラー |
QScreenCapture::CapturingNotSupported | 2 | キャプチャがサポートされていない |
QScreenCapture::CaptureFailed | 4 | 画面のキャプチャに失敗しました |
QScreenCapture::NotFound | 5 | 選択した画面が見つからない |
プロパティ 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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。