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

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

実際の場所は、新しいoutputLocation または NULL でないoutputDevice が割り当てられたときにリセットされる。record ()が呼び出され、outputDevicenull であるか、書き込み可能でない場合、レコーダーは以下の規則に基づいて実際の場所を生成する。

  • outputLocation が空、ディレクトリ、または拡張子のないファイルの場合、レコーダーは、 選択されたメディア形式とシステムMIMEタイプに基づいて、適切な拡張子を生成する。
  • outputLocation がディレクトリの場合、レコーダーはその中に新しいファイル名を生成する。
  • outputLocation が空の場合、レコーダーはオーディオまたはビデオ用のシステム固有ディレクトリに新しいファイル名を生成します。
  • レコーダーは、recorderStateChanged(RecordingState) を発する前に、実際の場所を生成する。

アクセス関数:

QUrl actualLocation() const

通知シグナル:

void actualLocationChanged(const QUrl &location)

autoStop : bool

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

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

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

デフォルトはfalse

QMediaRecorder::autoStopは、FFmpegバックエンドでのみサポートされています。

アクセス関数

bool autoStop() const
void setAutoStop(bool autoStop)

Notifier シグナル:

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

通知シグナル:

void errorChanged()

error()も参照

mediaFormat : QMediaFormat

記録メディアのフォーマットを返します。

アクセス関数:

QMediaFormat mediaFormat() const
void setMediaFormat(const QMediaFormat &format)

Notifierシグナル:

void mediaFormatChanged()

metaData : QMediaMetaData

Notifierシグナル: 録画に関連付けられたメタデータを返します。

アクセス関数

QMediaMetaData metaData() const
void setMetaData(const QMediaMetaData &metaData)

Notifier シグナル:録画に関連付けられたメタデータを返します:

outputLocation : QUrl

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

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

レコーダーに書き込み可能なoutputDevice が割り当てられている場合、出力場所は無視される。この動作は将来変更される可能性があるため、outputLocation またはoutputDevice のどちらか1つの出力のみを設定することを推奨する。

出力場所には、空、ディレクトリ、またはファイルを指定できます。ディレクトリまたはファイルへのパスは、相対パスでも絶対パスでもかまいません。record() メソッドは、指定された出力場所とシステム固有の設定に従って実際の場所を生成します。詳細については、actualLocation プロパティの説明を参照してください。

アクセス関数:

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

actualLocation およびoutputDevice()も参照のこと

quality : Quality

録画画質: 録画画質を返す。

アクセス関数:

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

ノーティファイア信号:

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

エラーの説明を含むerrorString で、error が発生したことを通知する。

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 にリセットされる。

このメソッドは、生成規則に従ってactualLocation を更新する。

注: モバイル・デバイスでは、録音は、recordを呼び出したときのデバイスの向きで行われ、録音中はロックされます。ユーザーインターフェイス上のアーティファクトを避けるため、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) が発せられるまで、デバイスをアライブしてオープンしておく必要がある。

このメソッドは、指定されたdevicenull でない限り、actualLocation を即座にリセットする。

書き込み可能な出力デバイスがレコーダーに割り当てられている場合、outputLocation は無視され、録画開始時にactualLocation は生成されない。この動作は将来変更される可能性があるため、outputLocation またはoutputDevice のどちらか1つの出力のみを設定することを推奨する。

QMediaRecorder::setOutputDevice はFFmpegバックエンドでのみサポートされています。

outputDevice() およびoutputLocationも参照

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

圧縮ビデオストリームのビットレートをビット毎秒で返す。

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