QAudioSource Class

QAudioSourceクラスは、オーディオ入力デバイスからオーディオデータを受信するためのインターフェースを提供します。詳細...

ヘッダー #include <QAudioSource>
CMake: find_package(Qt6 REQUIRED COMPONENTS Multimedia)
target_link_libraries(mytarget PRIVATE Qt6::Multimedia)
qmake: QT += multimedia
を継承する: QObject

パブリック関数

QAudioSource(const QAudioFormat &format = QAudioFormat(), QObject *parent = nullptr)
QAudioSource(const QAudioDevice &audioDevice, const QAudioFormat &format = QAudioFormat(), QObject *parent = nullptr)
virtual ~QAudioSource() override
qsizetype bufferSize() const
qsizetype bytesAvailable() const
qint64 elapsedUSecs() const
QtAudio::Error error() const
QAudioFormat format() const
bool isNull() const
qint64 processedUSecs() const
void reset()
void resume()
void setBufferSize(qsizetype value)
void setVolume(qreal volume)
QIODevice *start()
void start(QIODevice *device)
QtAudio::State state() const
void stop()
void suspend()
qreal volume() const

シグナル

void stateChanged(QtAudio::State state)

詳細説明

システムのデフォルトのオーディオ入力デバイスでオーディオ入力を構築できます。また、特定のQAudioDevice で QAudioSource を作成することもできます。オーディオ入力を作成する際、録音に使用するQAudioFormat も送信する必要があります(詳細はQAudioFormat クラスの説明を参照)。

ファイルに録音するには

QAudioSourceでは、音声入力デバイスを使って音声を録音することができます。このクラスのデフォルトのコンストラクタは、システムのデフォルトのオーディオ・デバイスを使用しますが、特定のデバイスのQAudioDevice を指定することもできます。また、録音したいQAudioFormat

QAudioSourceの起動は、書き込み用にオープンされたQIODevicestart ()を呼び出すだけです。例えば、ファイルに録音するには、次のようにします:

QFiledestinationFile;// クラス・メンバーQAudioSource* audio;// クラス・メンバー{ destinationFile.setFileName("/tmp/test.raw"); destinationFile.open() QIODevice::書き込み専用QIODevice::Truncate );    QAudioFormatformat;// 必要なフォーマットを設定する。例えば、format.setSampleRate(8000); format.setChannelCount(1); format.setSampleFormat(QAudioFormat::UInt8);    QAudioDeviceinfo=QMediaDevicesもし(!info.isFormatSupported(format)) {ならqWarning() << "Default format not supported, trying to use the nearest.";
    } audio= newQAudioSource(format, this); connect(audio, &)::stateChanged,this,&AudioInputExample::handleStateChanged.QAudioSource::stateChanged, this, &AudioInputExample::handleStateChanged);    QTimer::singleShot(3000, this, &AudioInputExample::stopRecording); audio->start(&destinationFile);// 3000msの間音声を記録する}

これは、指定されたフォーマットが入力デバイスでサポートされていれば録音を開始します(QAudioDevice::isFormatSupported()で確認できます)。何か問題があった場合は、error ()関数を使用して、何が問題だったのかをチェックする。stopRecording() スロットで録画を停止する。

void AudioInputExample::stopRecording()
{
    audio->stop();
    destinationFile.close();
    delete audio;
}

どの時点でも、QAudioSourceは、アクティブ、サスペンド、ストップ、アイドルの4つの状態のうちの1つになります。これらの状態は、QtAudio::State enumによって指定されます。suspend()、resume()、stop()、reset()、start()を通じて、状態の変更を直接要求することができます。現在の状態は、state ()によって報告される。状態が変更されると、QAudioSinkstateChanged ())からも通知される。

QAudioSourceは、start()の録音からの経過時間を測定する方法をいくつか提供しています。processedUSecs() 関数は、ストリームの長さを書き込んだマイクロ秒単位で返します。つまり、オーディオ入力が一時停止していた時間やアイドル状態だった時間は除外されます。elapsedUSecs ()関数は、QAudioSourceがどの状態にあったかにかかわらず、start ()が呼び出されてからの経過時間を返します。

エラーが発生した場合は、error ()でその理由を取得できます。考えられるエラー理由はQtAudio::Error enumで記述されています。エラーが発生すると、QAudioSourceはStoppedStatestateChanged() シグナルに接続して、エラーを処理してください:

void AudioInputExample::handleStateChanged(QAudio::State newState)
{
    switch (newState) {
        case QAudio::StoppedState:
            if (audio->error() != QAudio::NoError) {
                // Error handling
            } else {
                // Finished recording
            }
            break;

        case QAudio::ActiveState:
            // Started recording - read from IO device
            break;

        default:
            // ... other cases as appropriate
            break;
    }
}

QAudioSink およびQAudioDeviceも参照してください

メンバー関数に関する文書

[explicit] QAudioSource::QAudioSource(const QAudioFormat &format = QAudioFormat(), QObject *parent = nullptr)

新しいオーディオ入力を構築し、それをparent にアタッチする。 デフォルトのオーディオ入力デバイスは、出力format パラメータで使用される。

[explicit] QAudioSource::QAudioSource(const QAudioDevice &audioDevice, const QAudioFormat &format = QAudioFormat(), QObject *parent = nullptr)

新しいオーディオ入力を構築し、parent にアタッチする。audioDevice が参照するデバイスは、入力format パラメータで使用される。

[override virtual noexcept] QAudioSource::~QAudioSource()

このオーディオ入力を破棄する。

qsizetype QAudioSource::bufferSize() const

オーディオ・バッファのサイズをバイト単位で返す。

start() の前に呼び出された場合は、プラットフォームのデフォルト値を返す。start() の前に呼び出されたが、その前にsetBufferSize() が呼び出された場合、setBufferSize() で設定された値を返す。start() の後に呼び出された場合、実際に使用されているバッファ・サイズを返す。これは、setBufferSize() で設定された値とは異なる可能性がある。

setBufferSize()も参照

qsizetype QAudioSource::bytesAvailable() const

読み込めるオーディオデータの量をバイト数で返す。

注意:返される値は、QtAudio::ActiveState またはQtAudio::IdleState 状態のときのみ有効で、それ以外はゼロを返す。

qint64 QAudioSource::elapsedUSecs() const

アイドル状態およびサスペンド状態にあった時間を含め、start ()が呼び出されてからのマイクロ秒を返す。

QtAudio::Error QAudioSource::error() const

エラー状態を返す。

QAudioFormat QAudioSource::format() const

使用されているQAudioFormat を返す。

bool QAudioSource::isNull() const

音源がnull の場合はtrue を返し、そうでない場合はfalse を返す。

qint64 QAudioSource::processedUSecs() const

start() が呼び出されてから処理された音声データの量をマイクロ秒単位で返す。

void QAudioSource::reset()

バッファ内のすべてのオーディオデータを削除し、バッファをゼロにリセットする。

void QAudioSource::resume()

suspend() の後にオーディオ・データの処理を再開する。

以前に start(QIODevice*) を呼び出した場合は、error() をQtAudio::NoError に設定。以前に start( *) を呼び出した場合は、state() をQtAudio::ActiveState に設定。以前にstart() を呼び出した場合は、state() をQtAudio::IdleState に設定する。stateChanged() シグナルを発する。

void QAudioSource::setBufferSize(qsizetype value)

オーディオ・バッファ・サイズをvalue バイトに設定する。

注意:この関数はstart() の前であればいつでも呼び出すことができる。start() 以降の呼び出しは無視される。start() の後にbufferSize() を呼び出すと、実際に使用されているバッファサイズが返される。

bufferSize()も参照

void QAudioSource::setVolume(qreal volume)

入力音量をvolume に設定する。

音量は0.0 (無音) から1.0 (フル音量) まで直線的にスケーリングされる。この範囲外の値はクランプされる。

デバイスが入力ボリュームの調整に対応していない場合、volume は無視され、入力ボリュームは 1.0 のままになります。

デフォルトの音量は1.0 です。

注:音量の調整は、グローバル音量ではなく、このオーディオストリームの音量を変更します。

volume()も参照

QIODevice *QAudioSource::start()

システムのオーディオ入力からのデータ転送に使用される内部QIODevice へのポインタを返す。デバイスはすでにオープンされており、read() はそこから直接データを読み込むことができる。

注意: このポインタは、ストリームを停止した後や、別のストリームを開始した後には無効になります。

QAudioSource がシステムのオーディオ・デバイスにアクセスできた場合、state() はQtAudio::IdleState を返し、error() はQtAudio::NoError を返し、stateChanged() シグナルが発せられる。

この処理中に問題が発生した場合、error() はQtAudio::OpenError を返し、state() はQtAudio::StoppedState を返し、stateChanged() シグナルが発せられる。

QIODeviceも参照のこと

void QAudioSource::start(QIODevice *device)

システムのオーディオ入力からdevice へのオーディオ・データの転送を開始する。deviceWriteOnlyAppend またはReadWrite モードでオープンされていなければならない。

QAudioSource が正常にオーディオ・データを取得できた場合、state() はQtAudio::ActiveState またはQtAudio::IdleState のいずれかを返し、error() はQtAudio::NoError を返し、stateChanged() シグナルが発せられる。

この処理中に問題が発生した場合、error() はQtAudio::OpenError を返し、state() はQtAudio::StoppedState を返し、stateChanged() シグナルが発せられる。

QIODeviceも参照のこと

QtAudio::State QAudioSource::state() const

オーディオ処理の状態を返します。

[signal] void QAudioSource::stateChanged(QtAudio::State state)

このシグナルは、デバイスstate が変更されたときに発行されます。

注意: QtAudio 名前空間は Qt 6.6 まで QAudio という名前でした。このシグナルへの文字列ベースの接続は、パラメータタイプとしてQAudio::State を使用する必要があります:connect(source, SIGNAL(stateChanged(QAudio::State)), ...);

void QAudioSource::stop()

音声入力を停止し、システムリソースから切り離す。

error() をQtAudio::NoError に、state() をQtAudio::StoppedState に設定し、stateChanged() シグナルを発する。

void QAudioSource::suspend()

オーディオデータの処理を停止し、バッファリングされたオーディオデータを保持する。

error() をQtAudio::NoError に、state() をQtAudio::SuspendedState に設定し、stateChanged() 信号を発する。

qreal QAudioSource::volume() const

入力音量を返します。

デバイスが入力音量の調整をサポートしていない場合、返される値は 1.0 となる。

setVolume()も参照

© 2025 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.