QAudioSink Class

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

Header: #include <QAudioSink>
CMake: find_package(Qt6 REQUIRED COMPONENTS Multimedia)
target_link_libraries(mytarget PRIVATE Qt6::Multimedia)
qmake: QT += multimedia
Inherits: QObject

パブリック関数

QAudioSink(const QAudioFormat &format = QAudioFormat(), QObject *parent = nullptr)
QAudioSink(const QAudioDevice &audioDevice, const QAudioFormat &format = QAudioFormat(), QObject *parent = nullptr)
virtual ~QAudioSink()
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デバイスから必要なデータをフェッチします。従って、オーディオファイルの再生は次のように簡単です:

QFile sourceFile;   // class member.
QAudioSink* audio; // class member.
{
    sourceFile.setFileName("/tmp/test.raw");
    sourceFile.open(QIODevice::ReadOnly);

    QAudioFormat format;
    // Set up the format, eg.
    format.setSampleRate(8000);
    format.setChannelCount(1);
    format.setSampleFormat(QAudioFormat::UInt8);

    QAudioDevice info(QMediaDevices::defaultAudioOutput());
    if (!info.isFormatSupported(format)) {
        qWarning() << "Raw audio format not supported by backend, cannot play audio.";
        return;
    }

    audio = new QAudioSink(format, this);
    connect(audio, QAudioSink::stateChanged, this, &AudioInputExample::handleStateChanged);
    audio->start(&sourceFile);
}

オーディオシステムと出力デバイスが対応していれば、ファイルの再生が始まります。運が悪ければ、error ()関数で確認してください。

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

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

いつでも、QAudioSinkは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 によって参照されるデバイスが、outputformat パラメータで使用されます。

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

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

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()も参照してください

©2024 The Qt Company Ltd. 本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。