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 pause()
void record()
void stop()

シグナル

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 で生成されたメディアをエンコードおよび記録します:

メディアを記録するには、ジェネレーターを対応するメディア・キャプチャ・セッ ションに接続します。

ビデオエンコーディングと録画の性能は、ハードウェア、オペレーティングシス テム、インストールされているグラフィックドライバ、および入力ビデオフォーマット によって制限されます。QCameraQScreenCapture 、または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::ConstantQualityEncoding0エンコーディングは一定の品質を目指し、フィットするようにビットレートを調整する。
QMediaRecorder::ConstantBitRateEncoding1エンコーディングは一定のビットレートを使用し、フィットするように品質を調整する。
QMediaRecorder::AverageBitRateEncoding2エンコーディングは平均的なビットレート設定を維持しようとするが、必要に応じてビットレートを増減する。
QMediaRecorder::TwoPassEncoding3メディアはまず処理されて特性が決定され、次に2回目の処理が行われ、必要な部分に多くのビットが割り当てられる。

enum QMediaRecorder::Error

定数説明
QMediaRecorder::NoError0エラーなし。
QMediaRecorder::ResourceError1デバイスの準備ができていないか、使用できない。
QMediaRecorder::FormatError2現在のフォーマットはサポートされていません。
QMediaRecorder::OutOfSpaceError3デバイスに空き容量がありません。
QMediaRecorder::LocationNotWritable4出力場所が書き込み可能でない。

enum QMediaRecorder::Quality

品質エンコードレベルを列挙する。

定数
QMediaRecorder::VeryLowQuality0
QMediaRecorder::LowQuality1
QMediaRecorder::NormalQuality2
QMediaRecorder::HighQuality3
QMediaRecorder::VeryHighQuality4

enum QMediaRecorder::RecorderState

定数説明
QMediaRecorder::StoppedState0レコーダーはアクティブではありません。
QMediaRecorder::RecordingState1録画が要求されています。
QMediaRecorder::PausedState2レコーダーは一時停止中です。

プロパティ ドキュメント

[read-only] actualLocation : const QUrl

このプロパティは、最後のメディアコンテンツの実際の位置を保持する。

実際の位置は通常、録画開始後に取得でき、新しい位置が設定されるか、新しい録画が開始されるとリセットされる。

アクセス関数

QUrl actualLocation() const

通知シグナル

void actualLocationChanged(const QUrl &location)

autoStop : bool

このプロパティは、すべてのメディア入力がストリームの終了を報告したとき、または非アクティブになったときに、メディアレコーダが自動的に停止するかどうかを制御する。

ストリームの終了は、空のメディアフレームを送信することで通知されます。このフレームは、QVideoFrameInput またはQAudioBufferInput で明示的に送信できます。

ビデオ入力、特にQCameraQScreenCaptureQWindowCapture は、関数setActive で非アクティブにできます。

デフォルトはfalse

アクセス関数:

bool autoStop() const
void setAutoStop(bool autoStop)

ノーティファイア信号:

void autoStopChanged()

QCameraQScreenCaptureQWindowCaptureも参照

[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シグナル:録画に関連付けられたメタデータを返す:

outputLocation : QUrl

このプロパティは、メディアコンテンツの保存先を保持します。

例えば、サービスがローカルのファイルシステムのロケーションのみをサポートし、ネットワークURLが渡された場合、ロケーションの設定は失敗する可能性があります。操作に失敗すると、errorOccured()シグナルが発行される。

後者の場合、レコーダーはシステム固有の場所とファイル名スキームを使用します。

アクセス関数:

QUrl outputLocation() const
void setOutputLocation(const QUrl &location)

quality : Quality

アクセス関数:録画品質を返します。

アクセス関数

QMediaRecorder::Quality quality() const
void setQuality(QMediaRecorder::Quality quality)

Notifier シグナル:

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

エンコードされたビデオの解像度のwidthheight を設定する。

これはオーバーロードされた関数である。

備考: プロパティ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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。