ScreenCapture QML Type
このタイプは画面のキャプチャに使用されます。詳細...
| Import Statement: | import QtMultimedia |
| Since: | Qt 6.5 |
| In C++: | QScreenCapture |
プロパティ
- active : bool
- error : enumeration
- errorString : string
- maximumFrameRate : real
(since 6.12) - screen : Screen
信号
- errorChanged()
- errorOccurred(int error, string errorString)
方法
詳細説明
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を除くモバイルOSではサポートされていません。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
キャプチャが現在有効かどうかを示します。
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.