MediaRecorder QML Type
CaptureSession で生成されたメディアのエンコードおよび記録用。詳細...
| Import Statement: | import QtMultimedia |
| In C++: | QMediaRecorder |
プロパティ
- actualLocation : url
- audioBitRate : int
(since 6.6) - audioChannelCount : int
(since 6.6) - audioSampleRate : int
(since 6.6) - duration : qint64
- encodingMode : enumeration
(since 6.6) - error : enumeration
- errorString : string
- mediaFormat : mediaFormat
- metaData : mediaMetaData
- outputLocation : url
- quality : enumeration
- recorderState : enumeration
- videoBitRate : int
(since 6.6) - videoFrameRate : real
(since 6.6) - videoResolution : Size
(since 6.6)
信号
- actualLocationChanged(const QUrl &location)
- durationChanged(qint64 duration)
- errorOccurred(Error error, const QString &errorString)
- metaDataChanged()
- recorderStateChanged(RecorderState state)
方法
詳細な説明
CaptureSession 内のMediaRecorder要素を使用して、以下をエンコードおよび録音します:
- オーディオインターフェース(マイクやライン入力など)から取得した音声。
- カメラ、画面、またはアプリケーションウィンドウからキャプチャされた動画。
動画のエンコードおよび録画のパフォーマンスは、ハードウェア、オペレーティングシステム、インストールされているグラフィックドライバ、および入力動画形式によって制限されます。Camera 、ScreenCapture 、またはWindowCapture が、MediaRecorder がエンコードおよび記録できる速度よりも速いペースで動画フレームを生成する場合、レコーダーは一部のフレームをドロップする可能性があります。これは、入力フレームの解像度が高い場合(例えば4K)で、ハードウェアアクセラレーションによるエンコードが利用できない場合に発生しやすいです。
以下のコードは、デフォルトのカメラとデフォルトのオーディオ入力を使用する MediaRecorder を含む、簡単なキャプチャセッションを示しています。
CaptureSession {
id: captureSession
camera: Camera {
id: camera
active: true
}
audioInput: AudioInput {}
recorder: MediaRecorder {
id: recorder
}
}以下のコードは、録画の開始と停止の方法を示しています。
CameraButton {
text: "Record"
visible: recorder.recorderState !== MediaRecorder.RecordingState
onClicked: recorder.record()
}
CameraButton {
id: stopButton
text: "Stop"
visible: recorder.recorderState === MediaRecorder.RecordingState
onClicked: recorder.stop()
}関連項目: CaptureSession 、Camera 、ScreenCapture 、WindowCapture 、AudioInput 、およびImageCapture 。
プロパティのドキュメント
actualLocation : url [read-only]
最後のメディアコンテンツの実際の位置。
新しいoutputLocation が割り当てられると、実際の場所はリセットされます。record()が呼び出されると、レコーダーは以下のルールに基づいて実際の場所を生成します。
outputLocationが空、ディレクトリ、または拡張子のないファイルの場合、レコーダーは、選択されたメディア形式とシステムの MIME タイプに基づいて適切な拡張子を生成します。outputLocationがディレクトリの場合、レコーダーはその中に新しいファイル名を生成します。outputLocationが空の場合、レコーダーは、オーディオまたはビデオ用のシステム固有のディレクトリ内に新しいファイル名を生成します。- レコーダーは、
recorderStateChanged(RecordingState)を出力する前に、実際の保存場所を生成します。
audioBitRate : int [since 6.6]
このプロパティは、圧縮されたオーディオストリームのビットレート(ビット/秒)を保持します。
このプロパティは Qt 6.6 で導入されました。
audioChannelCount : int [since 6.6]
このプロパティは、オーディオチャンネルの数を保持します。
このプロパティは Qt 6.6 で導入されました。
audioSampleRate : int [since 6.6]
このプロパティは、オーディオのサンプリングレート(Hz)を保持します。
このプロパティは Qt 6.6 で導入されました。
duration : qint64 [read-only]
このプロパティには、記録されたメディアの再生時間がミリ秒単位で格納されます。
encodingMode : enumeration [since 6.6]
このプロパティはエンコーディングモードを保持します。
このプロパティは Qt 6.6 で導入されました。
「QMediaRecorder::EncodingMode」も参照してください 。
error : enumeration [read-only]
このプロパティは、現在のメディアレコーダーのエラー状態を保持します。
| 定数 | 説明 |
|---|---|
MediaRecorder.NoError | エラー状態ではありません。 |
MediaRecorder.ResourceError | システムリソースが不足しています |
MediaRecorder.FormatError | 現在のフォーマットがサポートされていません。 |
MediaRecorder.OutOfSpaceError | デバイスに空き領域がありません。 |
MediaRecorder.LocationNotWriteable | 出力先への書き込みができません。 |
errorString : string [read-only]
このプロパティには、現在のエラー状態を表す文字列が格納されています。
「error」も参照してください 。
mediaFormat : mediaFormat
このプロパティは、レコーダーの現在の MediaFormat を保持します。
metaData : mediaMetaData
このプロパティには、録音に関連付けられたメタデータが格納されます。
録画が開始されると、割り当てられたメタデータはすべてその録画に紐付けられます。
注: 録画を開始する前にメタデータを割り当て、正しく割り当てられていることを確認してください 。
関連項目: mediaMetaData 。
outputLocation : url
メディアコンテンツの保存先。
例えば、サービスがローカルファイルシステム上の場所のみをサポートしているにもかかわらず、ネットワークURLが渡された場合など、場所の設定に失敗することがあります。操作が失敗した場合、errorOccurred() シグナルが発行されます。
出力先は、空、ディレクトリ、またはファイルのいずれかです。ディレクトリやファイルへのパスは、相対パスまたは絶対パスのいずれでも構いません。record() メソッドは、指定された出力先とシステム固有の設定に基づいて、実際の場所を生成します。詳細については、actualLocation プロパティの説明を参照してください。
actualLocation およびerrorOccurred()も参照してください 。
quality : enumeration
品質エンコードレベルを一覧表示します。
| 定数 | 値 |
|---|---|
MediaRecorder.VeryLowQuality | |
MediaRecorder.LowQuality | |
MediaRecorder.NormalQuality | |
MediaRecorder.HighQuality | |
MediaRecorder.VeryHighQuality |
recorderState : enumeration [read-only]
このプロパティは、メディアレコーダーの現在の状態を保持します。
state プロパティはユーザーの要求を表しており、record()、pause()、またはstop() の呼び出し中に同期的に変更されます。また、録画に失敗した場合、RecorderState は非同期的に変更されることもあります。
| 定数 | 説明 |
|---|---|
MediaRecorder.StoppedState | レコーダーはアクティブではありません。 |
MediaRecorder.RecordingState | 録画が要求されています。 |
MediaRecorder.PausedState | レコーダーは一時停止しています。レコーディングが要求されています。 |
videoBitRate : int [since 6.6]
このプロパティには、圧縮されたビデオストリームのビットレート(ビット/秒)が格納されます。
このプロパティは Qt 6.6 で導入されました。
videoFrameRate : real [since 6.6]
このプロパティには、エンコードに使用される動画のフレームレートが格納されます。
このプロパティが正のフレームレートに設定されている場合、MediaRecorder はそのレートでエンコードしようとします。動画ソースとリコーダーのフレームレートが異なる場合、目標レートに達するために、ソースからのフレームが削除されたり、重複したりすることがあります。
デフォルト値 (-1) のままにするか、または正以外の値に設定した場合、MediaRecorder は、ビデオソースとコーデックの制限に基づいて最適な選択を試みます。
このプロパティは Qt 6.6 で導入されました。
videoResolution : Size [since 6.6]
このプロパティには、エンコードされた動画の解像度が格納されます。
Size に空の値を指定すると、レコーダーは動画ソースから利用可能な情報とコーデックの制限に基づいて、最適な解像度を選択します。
このプロパティは Qt 6.6 で導入されました。
シグナルのドキュメント
actualLocationChanged(const QUrl &location)
記録メディアの実際のlocation が変更されたことを示す信号です。
このシグナルは通常、記録が開始されたときに発せられます。
注: 対応するハンドラは onActualLocationChanged です。
durationChanged(qint64 duration)
記録されたメディアのduration が変更されたことを示すシグナルです。
注: 対応するハンドラは onDurationChanged です。
errorOccurred(Error error, const QString &errorString)
error が発生したことを示すシグナルです。
errorString には、エラーの説明が含まれています。
注: 対応するハンドラは onErrorOccurred です。
metaDataChanged()
メディアオブジェクトのメタデータが変更されたことを通知します。
複数のメタデータ要素が変更された場合でも、metaDataChanged() は 1 回だけ発行されます。
注: 対応するハンドラは `onMetaDataChanged` です。
recorderStateChanged(RecorderState state)
メディアレコーダーのstate が変更されたことを通知します。
注: 対応するハンドラは `onRecorderStateChanged` です。
メソッドのドキュメント
void pause()
録音を一時停止します。
レコーダーの状態が `QMediaRecorder.PausedState` に変更されます。
プラットフォームによっては、録画の一時停止がサポートされていない場合があります。その場合、レコーダーの状態は変更されません。
void record()
録音を開始します。
レコーダーの状態は直ちにMediaRecorder.RecordingState に変更されますが、録画は非同期で開始される場合があります。
録画に失敗した場合、error() シグナルが発信され、レコーダーの状態はQMediaRecorder.StoppedState にリセットされます。
このメソッドは、生成ルールに従って `actualLocation ` を更新します。
注: モバイルデバイスでは 、録画は record の呼び出し時のデバイスの向きで行われ、録画中は向きが固定されます。ユーザーインターフェース上の不自然な表示を避けるため、録画中は Window の contentOrientation プロパティを使用してユーザーインターフェースの向きを固定し、録画が終了したらロックを解除することをお勧めします。
void stop()
録画を停止します。
レコーダーは録画を停止します。ただし、保留中の動画および音声データの処理には、まだ多少時間がかかる場合があります。メディアレコーダーの状態が「QMediaRecorder::StoppedState 」に変わると、録画は完了します。
© 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.