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 からシステムのオーディオ出力へのオーディオ・データの転送を開始する。device はReadOnly または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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。