QAudioSink Class

QAudioSinkクラスは、オーディオデータをオーディオ出力デバイスに送信するためのインターフェースを提供します。詳細...

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

パブリック関数

QAudioSink(const QAudioFormat &format = QAudioFormat(), QObject *parent = nullptr)
QAudioSink(const QAudioDevice &audioDevice, const QAudioFormat &format = QAudioFormat(), QObject *parent = nullptr)
virtual ~QAudioSink() override
qsizetype bufferSize() const
qsizetype bytesFree() 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 で QAudioSink を作成することも可能です。オーディオ出力を作成する際、再生に使用するQAudioFormat も送信する必要があります(詳細はQAudioFormat クラスの説明を参照してください)。

ファイルを再生するには

start QIODeviceQAudioSinkは、ioデバイスから必要なデータをフェッチします。従って、オーディオファイルの再生は次のように簡単です:

QFilesourceFile;// クラス・メンバー。QAudioSink* sourceFile; // クラス・メンバー。QIODevice::ReadOnly);    QAudioFormatformat;// フォーマットの設定、例えばformat.setSampleRate(8000); format.setChannelCount(1); format.setSampleFormat(QAudioFormat::UInt8);    QAudioDeviceinfo(QMediaDevices::defaultAudioOutput());if(!info.isFormatSupported(format)) { {.        qWarning() << "Raw audio format not supported by backend, cannot play audio.";
       return; } audio= newQAudioSink(format, this); connect(audioQAudioSink::stateChanged, this, &AudioInputExample::handleStateChanged); audio->start(&sourceFile); }

オーディオシステムと出力デバイスが対応していれば、ファイルの再生が開始される。運が悪ければ、error ()関数で何が起こっているかチェックしてください。

ファイルの再生が終わったら、デバイスを停止する必要がある:

void AudioOutputExample::stopAudioOutput()
{
    audio->stop();
    sourceFile.close();
    delete audio;
}

いつでも、QAudioSinkは、active、suspended、stopped、idleの4つの状態のうちの1つになります。これらの状態は、QtAudio::State enumで記述されています。状態の変更は、stateChanged()シグナルを通して報告されます。このシグナルを使用して、例えばアプリケーションのGUIを更新することができる。ここではありふれた例として、play/pause ボタンの状態を変更する。suspend ()、stop ()、reset ()、resume ()、start ()で直接状態変更を要求する。

エラーが発生した場合は、error ()関数でerror type 。報告される可能性のあるエラーの説明については、QtAudio::Error enumを参照のこと。QtAudio::UnderrunError に遭遇すると、状態はQtAudio::IdleState に変化し、別のエラーに遭遇すると、状態はQtAudio::StoppedState に変化する。stateChanged() シグナルに接続することで、エラーをチェックすることができる:

void AudioOutputExample::handleStateChanged(QAudio::State newState)
{
    switch (newState) {
        case QAudio::IdleState:
            // Finished playing (no more data)
            AudioOutputExample::stopAudioOutput();
            break;

        case QAudio::StoppedState:
            // Stopped for other reasons
            if (audio->error() != QAudio::NoError) {
                // Error handling
            }
            break;

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

QAudioSource およびQAudioDeviceも参照のこと

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

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

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

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

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

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

このオーディオ出力を破棄します。

これにより、使用されていたシステムリソースが解放され、バッファが解放されます。

qsizetype QAudioSink::bufferSize() const

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

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

setBufferSize()も参照

qsizetype QAudioSink::bytesFree() const

オーディオバッファの空きバイト数を返します。

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

qint64 QAudioSink::elapsedUSecs() const

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

QtAudio::Error QAudioSink::error() const

エラー状態を返す。

QAudioFormat QAudioSink::format() const

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

bool QAudioSink::isNull() const

QAudioSink インスタンスがnull である場合はtrue を返し、そうでない場合はfalse を返す。

qint64 QAudioSink::processedUSecs() const

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

void QAudioSink::reset()

オーディオ出力を直ちに停止し、現在バッファにあるオーディオデータをすべて破棄する。QIODevice にプッシュされた保留中のオーディオデータはすべて無視される。

stop()も参照

void QAudioSink::resume()

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

state() をsuspend() が呼び出されたときのシンクの状態に設定し、error() を QAudioError::NoError に設定します。オーディオシンクの状態がQtAudio::SuspendedState でない場合、この関数は何もしません。

void QAudioSink::setBufferSize(qsizetype value)

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

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

bufferSize()も参照

void QAudioSink::setVolume(qreal volume)

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

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

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

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

UIの音量コントロールは通常、非線形にスケーリングする必要があります。例えば、対数スケールを使用すると、知覚されるラウドネスが直線的に変化します。詳しくはQtAudio::convertVolume() を参照。

volume()参照。

QIODevice *QAudioSink::start()

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

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

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

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

QIODeviceも参照のこと

void QAudioSink::start(QIODevice *device)

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

QAudioSink が正常に音声データを出力できた場合、state() はQtAudio::ActiveState を返し、error() はQtAudio::NoError を返し、stateChanged() シグナルが発せられる。

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

QIODeviceも参照のこと

QtAudio::State QAudioSink::state() const

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

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

この信号は、デバイスstate が変化したときに発せられる。これはオーディオ出力の現在の状態です。

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

void QAudioSink::stop()

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

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

注: Linux、およびDarwinでは、この操作は同期的に基礎となるオーディオ・バッファを流出させるため、バッファのペイロードに応じて遅延が発生する可能性があります。すべてのバッファを即座にリセットするには、代わりにreset

reset()も参照のこと

void QAudioSink::suspend()

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

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

qreal QAudioSink::volume() const

0.0 から 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.