QMediaRecorder Class
QMediaRecorderクラスは、キャプチャ・セッションのエンコードと記録に使用します。詳細...
Header: | #include <QMediaRecorder> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Multimedia) target_link_libraries(mytarget PRIVATE Qt6::Multimedia) |
qmake: | QT += multimedia |
In QML: | MediaRecorder |
Inherits: | QObject |
パブリックタイプ
enum | EncodingMode { ConstantQualityEncoding, ConstantBitRateEncoding, AverageBitRateEncoding, TwoPassEncoding } |
enum | Error { NoError, ResourceError, FormatError, OutOfSpaceError, LocationNotWritable } |
enum | Quality { VeryLowQuality, LowQuality, NormalQuality, HighQuality, VeryHighQuality } |
enum | RecorderState { StoppedState, RecordingState, PausedState } |
プロパティ
|
|
パブリック関数
QMediaRecorder(QObject *parent = nullptr) | |
virtual | ~QMediaRecorder() |
QUrl | actualLocation() const |
void | addMetaData(const QMediaMetaData &metaData) |
int | audioBitRate() const |
int | audioChannelCount() const |
int | audioSampleRate() const |
bool | autoStop() const |
QMediaCaptureSession * | captureSession() const |
qint64 | duration() const |
QMediaRecorder::EncodingMode | encodingMode() const |
QMediaRecorder::Error | error() const |
QString | errorString() const |
bool | isAvailable() const |
QMediaFormat | mediaFormat() const |
QMediaMetaData | metaData() const |
QIODevice * | outputDevice() const |
QUrl | outputLocation() const |
QMediaRecorder::Quality | quality() const |
QMediaRecorder::RecorderState | recorderState() const |
void | setAudioBitRate(int bitRate) |
void | setAudioChannelCount(int channels) |
void | setAudioSampleRate(int sampleRate) |
void | setAutoStop(bool autoStop) |
void | setEncodingMode(QMediaRecorder::EncodingMode mode) |
void | setMediaFormat(const QMediaFormat &format) |
void | setMetaData(const QMediaMetaData &metaData) |
void | setOutputDevice(QIODevice *device) |
void | setOutputLocation(const QUrl &location) |
void | setQuality(QMediaRecorder::Quality quality) |
void | setVideoBitRate(int bitRate) |
void | setVideoFrameRate(qreal frameRate) |
void | setVideoResolution(const QSize &size) |
void | setVideoResolution(int width, int height) |
int | videoBitRate() const |
qreal | videoFrameRate() const |
QSize | videoResolution() const |
パブリックスロット
シグナル
void | actualLocationChanged(const QUrl &location) |
void | audioBitRateChanged() |
void | audioChannelCountChanged() |
void | audioSampleRateChanged() |
void | autoStopChanged() |
void | durationChanged(qint64 duration) |
void | encoderSettingsChanged() |
void | encodingModeChanged() |
void | errorChanged() |
void | errorOccurred(QMediaRecorder::Error error, const QString &errorString) |
void | mediaFormatChanged() |
void | metaDataChanged() |
void | qualityChanged() |
void | recorderStateChanged(QMediaRecorder::RecorderState state) |
void | videoBitRateChanged() |
void | videoFrameRateChanged() |
void | videoResolutionChanged() |
詳しい説明
QMediaRecorder クラスを使用して、QMediaCaptureSession で生成されたメディアをエンコードおよび記録します:
- オーディオ。QAudioInput またはQAudioBufferInput を使用してください。
- ビデオ。QCamera,QScreenCapture,QWindowCapture, またはQVideoFrameInput を使用します。
メディアを記録するには、ジェネレーターを対応するメディア・キャプチャ・セッ ションに接続します。
ビデオエンコーディングと録画の性能は、ハードウェア、オペレーティングシス テム、インストールされているグラフィックドライバ、および入力ビデオフォーマット によって制限されます。QCamera
、QScreenCapture
、またはQWindowCapture
が、QMediaRecorder
がエンコードして記録できるよりも速くビデオフレームを生成する場合、レコーダーはいくつかのフレームをドロップすることがあります。この現象は、入力フレームの解像度が 4K などと高く、ハードウェアによる高速エンコードが利用できない場合に発生する可能性があります。入力ビデオをQVideoFrameInput
で生成する場合、QVideoFrameInput::sendVideoFrame
メソッドは何もせず、この制限に達して内部フレームキューがいっぱいになるたびにfalse
を返します。レコーダーが再び新しいフレームを受信する準備ができたことを知るには、信号QVideoFrameInput::readyToSendVideoFrame
を頼りにしてください。ビデオ・フレームの生成レートを変更できず、フレームをドロップすることが望ましくない場合は、ハードウェアのメモリ制限を考慮して、QVideoFrameInput
の上に独自のフレーム・キューを実装することを推奨します。
QMediaCaptureSession session; QAudioInput audioInput; session.setAudioInput(&input); QMediaRecorder recorder; session.setRecorder(&recorder); recorder.setQuality(QMediaRecorder::HighQuality); recorder.setOutputLocation(QUrl::fromLocalFile("test.mp3")); recorder.record();
メンバータイプ ドキュメント
enum QMediaRecorder::EncodingMode
エンコーディングモードを列挙する。
定数 | 値 | 説明 |
---|---|---|
QMediaRecorder::ConstantQualityEncoding | 0 | エンコーディングは一定の品質を目指し、フィットするようにビットレートを調整する。 |
QMediaRecorder::ConstantBitRateEncoding | 1 | エンコーディングは一定のビットレートを使用し、フィットするように品質を調整する。 |
QMediaRecorder::AverageBitRateEncoding | 2 | エンコーディングは平均的なビットレート設定を維持しようとするが、必要に応じてビットレートを増減する。 |
QMediaRecorder::TwoPassEncoding | 3 | メディアはまず処理されて特性が決定され、次に2回目の処理が行われ、必要な部分に多くのビットが割り当てられる。 |
enum QMediaRecorder::Error
定数 | 値 | 説明 |
---|---|---|
QMediaRecorder::NoError | 0 | エラーなし。 |
QMediaRecorder::ResourceError | 1 | デバイスの準備ができていないか、使用できない。 |
QMediaRecorder::FormatError | 2 | 現在のフォーマットはサポートされていません。 |
QMediaRecorder::OutOfSpaceError | 3 | デバイスに空き容量がありません。 |
QMediaRecorder::LocationNotWritable | 4 | 出力場所が書き込み可能でない。 |
enum QMediaRecorder::Quality
品質エンコードレベルを列挙する。
定数 | 値 |
---|---|
QMediaRecorder::VeryLowQuality | 0 |
QMediaRecorder::LowQuality | 1 |
QMediaRecorder::NormalQuality | 2 |
QMediaRecorder::HighQuality | 3 |
QMediaRecorder::VeryHighQuality | 4 |
enum QMediaRecorder::RecorderState
定数 | 値 | 説明 |
---|---|---|
QMediaRecorder::StoppedState | 0 | レコーダーはアクティブではありません。 |
QMediaRecorder::RecordingState | 1 | 録画が要求されています。 |
QMediaRecorder::PausedState | 2 | レコーダーは一時停止中です。 |
プロパティ ドキュメント
[read-only]
actualLocation : const QUrl
このプロパティは、最後のメディアコンテンツの実際の位置を保持する。
実際の位置は通常、録画開始後に取得でき、新しい位置が設定されるか、新しい録画が開始されるとリセットされる。
アクセス関数
QUrl | actualLocation() const |
通知シグナル
void | actualLocationChanged(const QUrl &location) |
autoStop : bool
このプロパティは、すべてのメディア入力がストリームの終了を報告したとき、または非アクティブになったときに、メディアレコーダが自動的に停止するかどうかを制御する。
ストリームの終了は、空のメディアフレームを送信することで通知されます。このフレームは、QVideoFrameInput またはQAudioBufferInput で明示的に送信できます。
ビデオ入力、特にQCamera 、QScreenCapture 、QWindowCapture は、関数setActive
で非アクティブにできます。
デフォルトはfalse
。
アクセス関数:
bool | autoStop() const |
void | setAutoStop(bool autoStop) |
ノーティファイア信号:
void | autoStopChanged() |
QCamera 、QScreenCapture 、QWindowCaptureも参照 。
[read-only]
duration : const qint64
このプロパティは、記録されたメディアの継続時間をミリ秒単位で保持する。
アクセス関数:
qint64 | duration() const |
アクセス関数:Notifierシグナル:
void | durationChanged(qint64 duration) |
[read-only]
error : const QMediaRecorder::Error
現在のエラー状態を返す。
アクセス関数:
QMediaRecorder::Error | error() const |
Notifierシグナル:現在のエラー状態を返す:
void | errorChanged() |
errorString()も参照のこと 。
[read-only]
errorString : const QString
現在のエラー状態を表す文字列を返します。
アクセス関数
QString | errorString() const |
Notifier シグナル:
void | errorChanged() |
error()も参照の こと。
mediaFormat : QMediaFormat
記録メディアのフォーマットを返します。
アクセス機能
QMediaFormat | mediaFormat() const |
void | setMediaFormat(const QMediaFormat &format) |
通知シグナル
void | mediaFormatChanged() |
metaData : QMediaMetaData
録画に関連付けられたメタデータを返します。
アクセス関数
QMediaMetaData | metaData() const |
void | setMetaData(const QMediaMetaData &metaData) |
Notifierシグナル:録画に関連付けられたメタデータを返す:
void | metaDataChanged() |
outputLocation : QUrl
このプロパティは、メディアコンテンツの保存先を保持します。
例えば、サービスがローカルのファイルシステムのロケーションのみをサポートし、ネットワークURLが渡された場合、ロケーションの設定は失敗する可能性があります。操作に失敗すると、errorOccured()シグナルが発行される。
後者の場合、レコーダーはシステム固有の場所とファイル名スキームを使用します。
アクセス関数:
QUrl | outputLocation() const |
void | setOutputLocation(const QUrl &location) |
quality : Quality
アクセス関数:録画品質を返します。
アクセス関数
QMediaRecorder::Quality | quality() const |
void | setQuality(QMediaRecorder::Quality quality) |
Notifier シグナル:
void | qualityChanged() |
[read-only]
recorderState : const QMediaRecorder::RecorderState
このプロパティは、メディアレコーダの現在の状態を保持する。
stateプロパティはユーザー要求を表し、record ()、pause ()、stop ()の呼び出し中に同期的に変更される。レコーダーの状態は、録画失敗時に非同期に変更されることもある。
アクセス関数:
QMediaRecorder::RecorderState | recorderState() const |
Notifier シグナル:
void | recorderStateChanged(QMediaRecorder::RecorderState state) |
メンバ関数ドキュメント
QMediaRecorder::QMediaRecorder(QObject *parent = nullptr)
メディアレコーダを構築する。メディアレコーダはparent の子オブジェクトです。
[virtual noexcept]
QMediaRecorder::~QMediaRecorder()
メディアレコーダーオブジェクトを破棄する。
[signal]
void QMediaRecorder::actualLocationChanged(const QUrl &location)
記録メディアの実際のlocation が変更されたことを通知する。このシグナルは通常、録画開始時に発せられる。
注: プロパティactualLocation に対するノーティファイアシグナル。
void QMediaRecorder::addMetaData(const QMediaMetaData &metaData)
記録メディアにmetaData を追加する。
int QMediaRecorder::audioBitRate() const
圧縮オーディオストリームのビットレートをビット毎秒で返す。
注: プロパティ audioBitRate のゲッター関数。
setAudioBitRate()も参照 。
[signal]
void QMediaRecorder::audioBitRateChanged()
録画音声ビットレートが変更されたときに通知する。
注: プロパティaudioBitRate に対するノーティファイアシグナル。
int QMediaRecorder::audioChannelCount() const
オーディオチャンネル数を返す。
注: プロパティ audioChannelCount のゲッター関数。
setAudioChannelCount()も参照 。
[signal]
void QMediaRecorder::audioChannelCountChanged()
録音オーディオチャンネル数が変化したときのシグナル。
注: プロパティaudioChannelCount のノーティファイアシグナル。
int QMediaRecorder::audioSampleRate() const
オーディオサンプルレート(Hz)を返す。
注: プロパティ audioSampleRate のゲッター関数。
setAudioSampleRate()も参照 。
[signal]
void QMediaRecorder::audioSampleRateChanged()
録音オーディオサンプルレートが変更されたときのシグナル。
注: プロパティaudioSampleRate に対するノーティファイアシグナル。
QMediaCaptureSession *QMediaRecorder::captureSession() const
メディアキャプチャセッションを返します。
[signal]
void QMediaRecorder::durationChanged(qint64 duration)
記録メディアのduration が変更されたことを通知する。
注: プロパティduration のノーティファイア信号。
[signal]
void QMediaRecorder::encoderSettingsChanged()
エンコーダ設定が変更されたことを通知する。
QMediaRecorder::EncodingMode QMediaRecorder::encodingMode() const
エンコードモードを返す。
備考: プロパティ encodingMode のゲッター関数。
setEncodingMode() およびEncodingModeも参照 。
[signal]
void QMediaRecorder::encodingModeChanged()
エンコーディングモードが変更されたときのシグナル。
備考: プロパティencodingMode に対するノーティファイアシグナル。
[signal]
void QMediaRecorder::errorOccurred(QMediaRecorder::Error error, const QString &errorString)
error が発生したことを通知する。errorString はエラーの説明を含む。
bool QMediaRecorder::isAvailable() const
メディアレコーダサービスが使用可能であれば、true
を返す。
[signal]
void QMediaRecorder::metaDataChanged()
メディアオブジェクトのメタデータが変更されたことを通知する。
複数のメタデータ要素が変更された場合、metaDataChanged()は一度だけ発行される。
注: metaData プロパティの通知シグナル。
QIODevice *QMediaRecorder::outputDevice() const
メディア・コンテンツの出力IOデバイスを返す。
setOutputDevice()も参照 。
[slot]
void QMediaRecorder::pause()
録画を一時停止する。
レコーダーの状態はQMediaRecorder::PausedState に変更される。
プラットフォームによっては、録画の一時停止がサポートされていない場合があります。この場合、レコーダーの状態は変更されない。
[signal]
void QMediaRecorder::qualityChanged()
録画品質が変更されたときに通知する。
注: プロパティの通知信号quality 。
[slot]
void QMediaRecorder::record()
録画開始。
レコーダーの状態はすぐにc{QMediaRecorder::RecordingState}に変更されるが、録画は非同期に開始されることがある。
録画に失敗すると、error() シグナルが発せられ、レコーダーの状態はQMediaRecorder::StoppedState
にリセットされる。
注: モバイル・デバイスでは、録音は、録音を呼び出したときのデバイスの向きで行われ、録音中はロックされる。ユーザーインターフェースのアーティファクトを避けるため、QWindow の contentOrientation プロパティを使用して、録画が進行している間はユーザーインターフェースを同じ向きにロックしておき、録画が終了したらロックを解除することをお勧めします。
QMediaRecorder::RecorderState QMediaRecorder::recorderState() const
現在のメディアレコーダーの状態を返す。
注: プロパティrecorderStateのゲッター関数。
QMediaRecorder::RecorderStateも参照のこと 。
[signal]
void QMediaRecorder::recorderStateChanged(QMediaRecorder::RecorderState state)
メディアレコーダのstate が変更されたことを通知する。
備考: プロパティrecorderState のノーティファイアシグナル。
void QMediaRecorder::setAudioBitRate(int bitRate)
オーディオbitRate をビット毎秒で設定する。
注: プロパティaudioBitRate のセッター関数。
audioBitRate()も参照のこと 。
void QMediaRecorder::setAudioChannelCount(int channels)
音声channels の数を設定する。
値 -1 は、レコーダが、オーディオソースから利用可能なものとコーデックの制限に基づいて、最適な選択を行うべきであることを示す。
備考: プロパティaudioChannelCount のセッター関数。
audioChannelCount()も参照 。
void QMediaRecorder::setAudioSampleRate(int sampleRate)
オーディオsampleRate を Hz 単位で設定します。
値が-1
の場合、レコーダーは、オーディオソースから利用可能なものと、コーデックの制限に基づいて、最適な選択を行う必要があることを示します。
注: プロパティaudioSampleRate のセッター関数です。
audioSampleRate()も参照してください 。
void QMediaRecorder::setEncodingMode(QMediaRecorder::EncodingMode mode)
エンコードmode 設定を設定します。
ConstantQualityEncoding が設定されている場合、品質エンコーディングパラメータが使用され、ビットレートは無視されます。
注: プロパティencodingMode に対するセッター関数。
encodingMode() およびEncodingModeも参照 。
void QMediaRecorder::setMetaData(const QMediaMetaData &metaData)
メタデータをmetaData に設定する。
注: メタデータが正しく設定されるようにするには、録画を開始する前に設定する必要があります。録画が開始されると、設定されたメタデータは次の録画に添付される。
注: プロパティmetaData に対するセッター関数。
metaData()も参照 。
void QMediaRecorder::setOutputDevice(QIODevice *device)
メディアコンテンツの出力 IO デバイスを設定する。
device は、録画開始前にWriteOnly またはReadWrite モードで開いておく必要がある。
メディアレコーダは、指定されたdevice の所有権を取らない。録画が開始された場合、デバイスは、信号recorderStateChanged(StoppedState)
が発せられるまで、 生かしてオープンしておかなければならない。
outputDevice()も参照 。
void QMediaRecorder::setVideoBitRate(int bitRate)
ビデオbitRate をビット毎秒で設定する。
注: プロパティvideoBitRate のセッター関数。
videoBitRate()も参照 。
void QMediaRecorder::setVideoFrameRate(qreal frameRate)
ビデオframeRate を設定する。
値が 0 の場合、レコーダは、ビデオソースから利用可能なものとコーデックの制限に基 づいて最適な選択を行うべきであることを示す。
備考: プロパティvideoFrameRate のセッター関数。
videoFrameRate()も参照 。
void QMediaRecorder::setVideoResolution(const QSize &size)
エンコードされた動画の解像度をsize に設定する。
空のQSize を渡すと、ビデオソースから利用可能なものとコーデックの制限に基づいて、レコーダに最適な解像度を選択させることができます。
注: プロパティvideoResolution のセッター関数。
videoResolution()も参照 。
void QMediaRecorder::setVideoResolution(int width, int height)
エンコードされたビデオの解像度のwidth とheight を設定する。
これはオーバーロードされた関数である。
備考: プロパティvideoResolution のセッター関数。
[slot]
void QMediaRecorder::stop()
レコーダーは録画を停止する。しかし、保留中のビデオおよびオーディオデータの処理には、まだ時間がかかる場合があります。メディアレコーダの状態がQMediaRecorder::StoppedState に変わると、録画は終了する。
int QMediaRecorder::videoBitRate() const
圧縮ビデオストリームのビットレートを、1 秒あたりのビット数で返します。
注: プロパティ videoBitRate のゲッター関数。
setVideoBitRate()も参照 。
[signal]
void QMediaRecorder::videoBitRateChanged()
録画映像のビットレートが変更されたときに通知する。
注: videoBitRate プロパティのノーティファイアシグナル。
qreal QMediaRecorder::videoFrameRate() const
ビデオフレームレートを返す。
注: プロパティ videoFrameRate に対するゲッター関数。
setVideoFrameRate()も参照のこと 。
[signal]
void QMediaRecorder::videoFrameRateChanged()
録画映像のフレームレートが変化したときのシグナル。
備考: プロパティvideoFrameRate に対するノーティファイアシグナル。
QSize QMediaRecorder::videoResolution() const
エンコードされた映像の解像度を返す。
注 : プロパティ videoResolution に対するゲッター関数。
setVideoResolution()も参照 。
[signal]
void QMediaRecorder::videoResolutionChanged()
録画解像度が変更された場合に通知する。
注: プロパティの通知シグナルvideoResolution 。
本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。