QAudioSink Class
Die Klasse „QAudioSink“ bietet eine Schnittstelle zum Senden von Audiodaten an ein Audioausgabegerät. Mehr...
| Header: | #include <QAudioSink> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Multimedia) target_link_libraries(mytarget PRIVATE Qt6::Multimedia) |
| qmake: | QT += multimedia |
| Erbt von: | QObject |
Öffentliche Funktionen
| QAudioSink(const QAudioFormat &format = QAudioFormat(), QObject *parent = nullptr) | |
| QAudioSink(const QAudioDevice &audioDevice, const QAudioFormat &format = QAudioFormat(), QObject *parent = nullptr) | |
| virtual | ~QAudioSink() override |
(since 6.10) qsizetype | bufferFrameCount() const |
| qsizetype | bufferSize() const |
| qsizetype | bytesFree() const |
| qint64 | elapsedUSecs() const |
| QtAudio::Error | error() const |
| QAudioFormat | format() const |
(since 6.10) qsizetype | framesFree() const |
| bool | isNull() const |
(since 6.12) qsizetype | nativePeriodFrameCount() const |
| qint64 | processedUSecs() const |
| void | reset() |
| void | resume() |
(since 6.10) void | setBufferFrameCount(qsizetype value) |
| void | setBufferSize(qsizetype value) |
(since 6.12) void | setNativePeriodFrameCount(qsizetype frameCount) |
| void | setVolume(qreal volume) |
| QIODevice * | start() |
(since 6.11) void | start(Callback &&cb) |
| void | start(QIODevice *device) |
| QtAudio::State | state() const |
| void | stop() |
| void | suspend() |
| qreal | volume() const |
Signale
| void | stateChanged(QtAudio::State state) |
Ausführliche Beschreibung
Sie können eine Audioausgabe mit dem standardmäßigen Audioausgabegerät des Systems erstellen. Es ist auch möglich, ein `QAudioSink` mit einem bestimmten ` QAudioDevice` zu erstellen. Wenn Sie die Audioausgabe erstellen, sollten Sie auch den für die Wiedergabe zu verwendenden ` QAudioFormat ` übergeben (Einzelheiten finden Sie in der Klassenbeschreibung von ` QAudioFormat `).
QAudioSink kann in zwei verschiedenen Modi verwendet werden:
- Verwendung eines ` QIODevice ` aus einem Anwendungsthread
- Verwendung einer Callback-basierten Schnittstelle aus dem Audio-Thread
QIODevice-Schnittstelle
Um die Wiedergabe eines Audiostreams zu starten, muss lediglich ` start()` mit einem ` QIODevice` aufgerufen werden. QAudioSink holt dann die benötigten Daten vom E/A-Gerät. Die Wiedergabe einer Audiodatei ist also ganz einfach:
QFile sourceFile; // Klassenmitglied.
QAudioSink* audio; // Klassenmitglied.
{
sourceFile.setFileName("/tmp/test.raw");
sourceFile.open(QIODevice::ReadOnly);
QAudioFormat format;
// Format einrichten, z. B.
format.setSampleRate(44100);
format.setChannelCount(1);
format.setSampleFormat(QAudioFormat::Int16);
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);
}Die Wiedergabe der Datei beginnt, vorausgesetzt, das Audiosystem und das Ausgabegerät unterstützen dies. Sollte dies nicht der Fall sein, überprüfen Sie die Funktion „ error()“.
Nachdem die Datei vollständig abgespielt wurde, müssen wir das Gerät anhalten:
void AudioOutputExample::stopAudioOutput()
{
audio->stop();
sourceFile.close();
delete audio;
}Zu jedem Zeitpunkt befindet sich das `QAudioSink` in einem von vier Zuständen: aktiv, angehalten, gestoppt oder im Leerlauf. Diese Zustände werden durch die Enumeration ` QtAudio::State ` beschrieben.
Threading-Modell und Pufferung
Die Schnittstelle ` QIODevice ` ist für die Verwendung aus dem Anwendungsthread heraus konzipiert. Zur Kommunikation mit dem Audiothread wird ein wartungsfreier Ringpuffer verwendet. Die Größe dieses Ringpuffers lässt sich mit ` setBufferSize()` konfigurieren und beträgt standardmäßig 250 ms. Der Zustand dieses Puffers kann mit ` bytesFree()` abgefragt werden. Wenn der Ringpuffer keine Daten mehr enthält, sendet der Audio-Thread Stille an das Audiogerät, und der Zustand wechselt zu „ QtAudio::IdleState “ und kehrt zu „ QtAudio::ActiveState “ zurück, sobald weitere Daten über ` QIODevice` verfügbar sind.
Callback-Schnittstelle
Der bevorzugte Weg, um eine geringe Audio-Latenz zu erreichen, ist die Verwendung der callback-basierten Schnittstelle. Sie ermöglicht es Ihnen, Audiodaten direkt an das Audiogerät zu schreiben, ohne den Umweg über einen „ QIODevice “ nehmen zu müssen. Dies geschieht durch den Aufruf von ` start()` mit einer Callback-Funktion, die vom Audio-Thread aufgerufen wird. Diese Callback-Funktion wird mit einem ` QSpan<SampleType>` aufgerufen, sobald das Audio-Backend Daten benötigt.
QAudioSink* audio; // Klassenmitglied.
float phase; // Klassenmitglied.
{
QAudioFormat format;
// Format einrichten, z. B.
format.setSampleRate(44100);
format.setChannelCount(2);
format.setSampleFormat(QAudioFormat::Float);
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);
float phaseIncrement = 2 * M_PI * 220.0 / format.sampleRate(); // 220-Hz-Sinuswelle
audio->start([&phase, phaseIncrement] (QSpan<float> interleavedAudioBuffer) {
// Der Audio-Callback sollte keine Funktionen aufrufen, die möglicherweise blockieren könnten
// Den Audio-Puffer mit einer Sinuswelle füllen
const int sampleCount = interleavedAudioBuffer.size() / 2; // Stereo, daher durch 2 teilen
for (int i = 0; i < sampleCount;++i) {
float sample = std::sin(phase);
interleavedAudioBuffer[i * 2] = sample; // Linker Kanal
interleavedAudioBuffer[i * 2 + 1] = sample; // Rechter Kanal
phase+= phaseIncrement; // Phase für das nächste Sample erhöhen
}
});
if (!audio->error()== QtAudio::Error::NoError) {
// Zusätzlich zu den anderen `start()`-Signaturen schlägt der Start des Audio-Callbacks fehl, wenn
// * das Backend keine callback-basierte E/A implementiert (die API ist auf allen wichtigen
// Plattformen verfügbar )
// * die Signatur des Audio-Callbacks nicht mit `format.sampleFormat()` übereinstimmt
qWarning() << "Error starting audio output:" << audio->errorString();
}
}Im Gegensatz zur auf QIODevice basierenden Schnittstelle kann sich der QAudioSink nur in den Zuständen „active“, „suspendend“ und „stopped“ befinden. Die API „ setBufferSize()“ ist bei Verwendung des Callbacks nicht verfügbar; die Größe des Callback-Arguments wird vom Audio-Backend bestimmt.
Hinweis: Diese API ist nur auf Plattformen verfügbar, die die Callback-API unterstützen: Apples CoreAudio (macOS, iOS usw.), Windows, Linux (mit dem PulseAudio- oder PipeWire-Backend) und Android.
Hinweis: Der Callback wird in einem Soft-Echtzeit-Audio-Thread aufgerufen. Es ist wichtig sicherzustellen, dass der Callback nicht blockiert, da dies zu Audio-Störungen oder Aussetzern führen kann. Dazu gehören blockierende E/A-Vorgänge, das Sperren von Mutexen, die Zuweisung von Speicher oder andere Operationen, die zu einer Blockierung führen können. Bewährte Vorgehensweisen finden Sie in Ross Bencinas Artikel „Real-time audio programming 101: time waits for nothing“. Ziehen Sie außerdem die Verwendung des Realtime-Sanitizers von Clang in Betracht, um den Audio-Callback zu validieren.
Zustands- und Fehlerbehandlung
Zustandsänderungen werden über das Signal „ stateChanged()“ gemeldet. Sie können dieses Signal beispielsweise nutzen, um die Benutzeroberfläche der Anwendung zu aktualisieren; ein einfaches Beispiel hierfür wäre das Ändern des Zustands einer Schaltfläche „ play/pause “. Sie fordern eine Zustandsänderung direkt mit den Funktionen „ suspend()“, „ stop()“, „ reset()“, „ resume()“ und „ start()“ an.
Der QAudioSink wechselt in den Zustand „ StoppedState “, wenn ein Fehler auftritt. Der Fehlerzustand ( error type ) kann mit der Funktion error() abgerufen werden. Eine Beschreibung der möglichen Fehler, die gemeldet werden, finden Sie in der Enumeration QtAudio::Error. Durch den Aufruf von stop() oder reset() wird der Fehlerzustand auf NoError zurückgesetzt.
Sie können auf Fehler prüfen, indem Sie eine Verbindung zum Signal „ stateChanged()“ herstellen:
void AudioOutputExample::handleStateChanged(QtAudio::State newState)
{
switch (newState) {
case QtAudio::IdleState:
// Finished playing (no more data)
AudioOutputExample::stopAudioOutput();
break;
case QtAudio::StoppedState:
// Stopped for other reasons
if (audio->error() != QtAudio::NoError) {
// Error handling
}
break;
default:
// ... other cases as appropriate
break;
}
}Siehe auch QAudioSource und QAudioDevice.
Dokumentation zu Mitgliedsfunktionen
[explicit] QAudioSink::QAudioSink(const QAudioFormat &format = QAudioFormat(), QObject *parent = nullptr)
Erstellen Sie eine neue Audioausgabe und verknüpfen Sie diese mit ` parent`. Mit den Parametern ` format ` wird das Standard-Audioausgabegerät verwendet. Wenn ` format ` standardmäßig initialisiert ist, wird das Format auf das bevorzugte Format des Audiogeräts gesetzt.
[explicit] QAudioSink::QAudioSink(const QAudioDevice &audioDevice, const QAudioFormat &format = QAudioFormat(), QObject *parent = nullptr)
Erstellen Sie eine neue Audioausgabe und verknüpfen Sie diese mit „ parent “. Das Gerät, auf das „ audioDevice “ verweist, wird mit den Parametern „ format “ der Ausgabe verwendet. Wenn „ format “ standardmäßig initialisiert wird, wird das Format auf das bevorzugte Format von „ audioDevice “ gesetzt.
[override virtual noexcept] QAudioSink::~QAudioSink()
Löscht diese Audioausgabe.
Dadurch werden alle verwendeten Systemressourcen freigegeben und alle Puffer geleert.
[since 6.10] qsizetype QAudioSink::bufferFrameCount() const
Gibt die Größe des Audio-Puffers in Frames zurück.
Wird vor „ start()“ aufgerufen, wird der plattformspezifische Standardwert zurückgegeben. Wird vor „ start() “ aufgerufen, aber zuvor wurden „ setBufferSize()“ oder „ setBufferFrameCount()“ aufgerufen, wird der durch „ setBufferSize() “ oder „ setBufferFrameCount() “ festgelegte Wert zurückgegeben. Wird nach „ start() “ aufgerufen, wird die tatsächlich verwendete Puffergröße zurückgegeben. Diese entspricht möglicherweise nicht dem Wert, der zuvor durch „ setBufferSize() “ oder „ setBufferFrameCount() “ festgelegt wurde.
Diese Funktion wurde in Qt 6.10 eingeführt.
Siehe auch „ setBufferFrameCount()“ und „ bufferSize “.
qsizetype QAudioSink::bufferSize() const
Gibt die Größe des Audiopuffers in Byte zurück.
Wird vor dem Aufruf von ` start()` aufgerufen, wird der plattformspezifische Standardwert zurückgegeben. Wird vor dem Aufruf von ` start() ` aufgerufen, aber zuvor wurden bereits ` setBufferSize()` oder ` setBufferFrameCount()` aufgerufen, wird der durch ` setBufferSize() ` oder ` setBufferFrameCount()` festgelegte Wert zurückgegeben. Wird nach dem Aufruf von ` start()` aufgerufen, wird die tatsächlich verwendete Puffergröße zurückgegeben. Diese entspricht möglicherweise nicht dem Wert, der zuvor durch ` setBufferSize() ` oder ` setBufferFrameCount()` festgelegt wurde.
Siehe auch setBufferSize() und bufferFrameCount.
qsizetype QAudioSink::bytesFree() const
Gibt die Anzahl der im Audio-Puffer verfügbaren freien Bytes zurück.
Hinweis: Der Rückgabewert ist nur gültig, solange sich der Audio-Puffer im Status „ QtAudio::ActiveState “ oder „ QtAudio::IdleState “ befindet; andernfalls wird Null zurückgegeben.
Siehe auch „ framesFree “.
qint64 QAudioSink::elapsedUSecs() const
Gibt die Zeit in Mikrosekunden seit dem Aufruf von ` start()` zurück, einschließlich der Zeit in den Zuständen „Idle“ und „Suspend“.
QtAudio::Error QAudioSink::error() const
Gibt den Fehlerstatus zurück.
QAudioFormat QAudioSink::format() const
Gibt den derzeit verwendeten „ QAudioFormat “ zurück.
[since 6.10] qsizetype QAudioSink::framesFree() const
Gibt die Anzahl der im Audio-Puffer verfügbaren freien Frames zurück.
Hinweis: Der Rückgabewert ist nur gültig, solange sich der Audio-Buffer im Zustand „ QtAudio::ActiveState “ oder „ QtAudio::IdleState “ befindet; andernfalls wird Null zurückgegeben.
Diese Funktion wurde in Qt 6.10 eingeführt.
Siehe auch „ bytesFree “.
bool QAudioSink::isNull() const
Gibt „ true “ zurück, wenn die Instanz von „ QAudioSink “ „ null “ lautet; andernfalls wird „ false “ zurückgegeben.
[since 6.12] qsizetype QAudioSink::nativePeriodFrameCount() const
Gibt die native Anzahl der Perioden zurück.
Gibt -1 zurück, wenn nicht festgelegt; andernfalls wird der zuvor mit ` setNativePeriodFrameCount()` festgelegte Wert zurückgegeben.
Diese Funktion wurde in Qt 6.12 eingeführt.
Siehe auch „ setNativePeriodFrameCount “.
qint64 QAudioSink::processedUSecs() const
Gibt die Menge der seit dem Aufruf von ` start()` verarbeiteten Audiodaten zurück (in Mikrosekunden).
void QAudioSink::reset()
Die Audioausgabe wird sofort gestoppt und alle derzeit in den Puffern befindlichen Audiodaten werden verworfen. Alle an „ QIODevice “ übermittelten, noch ausstehenden Audiodaten werden ignoriert.
Siehe auch stop().
void QAudioSink::resume()
Setzt die Verarbeitung von Audiodaten nach einem Aufruf von ` suspend()` fort.
Setzt „ state()“ auf den Zustand, den der Sink zum Zeitpunkt des Aufrufs von „ suspend()“ hatte. Diese Funktion führt keine Aktion aus, wenn der Zustand des Audio-Sinks nicht „ QtAudio::SuspendedState “ ist.
[since 6.10] void QAudioSink::setBufferFrameCount(qsizetype value)
Stellt die Größe des Audio-Puffers auf „ value “ in Frame-Anzahl ein.
Hinweis: Diese Funktion kann jederzeit vor dem Aufruf von ` start()` aufgerufen werden. Aufrufe dieser Funktion werden nach dem Aufruf von ` start()` ignoriert. Es sollte nicht davon ausgegangen werden, dass die festgelegte Puffergröße der tatsächlich verwendeten Puffergröße entspricht – rufen Sie ` bufferFrameCount()` jederzeit nach dem Aufruf von ` start()` auf, um die tatsächlich verwendete Puffergröße abzurufen.
Die Eigenschaften „ bufferFrameCount()“ und „ bufferSize()“ geben die Ringpuffergröße bei Verwendung der „ QIODevice “-APIs an. Die native Periodengröße wird über „ setNativePeriodFrameCount()“ gesteuert.
Diese Funktion wurde in Qt 6.10 eingeführt.
Siehe auch bufferFrameCount() und setBufferSize.
void QAudioSink::setBufferSize(qsizetype value)
Legt die Größe des Audio-Puffers auf „ value “ in Byte fest.
Hinweis: Diese Funktion kann jederzeit vor dem Aufruf von ` start()` aufgerufen werden. Aufrufe dieser Funktion werden nach dem Aufruf von ` start()` ignoriert. Es sollte nicht davon ausgegangen werden, dass die festgelegte Puffergröße der tatsächlich verwendeten Puffergröße entspricht – rufen Sie ` bufferSize()` jederzeit nach dem Aufruf von ` start()` auf, um die tatsächlich verwendete Puffergröße abzurufen.
Die Eigenschaften „ bufferFrameCount()“ und „ bufferSize()“ geben die Ringpuffergröße bei Verwendung der „ QIODevice “-APIs an. Die native Periodengröße wird über „ setNativePeriodFrameCount()“ gesteuert.
Siehe auch bufferSize() und setBufferFrameCount.
[since 6.12] void QAudioSink::setNativePeriodFrameCount(qsizetype frameCount)
Legt die native Perioden-Frame-Anzahl auf „ frameCount “ fest.
Passen Sie die vom Betriebssystem und der Hardware verwendete Größe des Audio-Puffers an. Standardmäßig (wenn nicht festgelegt) verwendet das System einen plattformabhängigen Wert, typischerweise 1024 Frames (~23 ms bei 44100 Hz).
Verwenden Sie kleinere Werte (64–256), um die Latenz zu verringern, oder größere Werte (2048–4096), um das Risiko von Pufferunterläufen (Dropouts) zu verringern.
Gültige Werte sind 2-Potenzen zwischen 32 und 4096 (einschließlich) oder -1, um die Einstellung zurückzusetzen. Kann nur aufgerufen werden, wenn der Audio-Sink angehalten ist.
Entspricht plattformspezifischen Einstellungen: kAudioDevicePropertyBufferFrameSize (macOS), IAudioClient::bufferDuration (Windows), PW_KEY_NODE_FORCE_QUANTUM (PipeWire/Linux) und AAudioStreamBuilder_setBufferCapacityInFrames (Android).
Hinweis: Dies ist unabhängig von dem mit setBufferSize() oder setBufferFrameCount() konfigurierten Ringpuffer.
Diese Funktion wurde in Qt 6.12 eingeführt.
Siehe auch nativePeriodFrameCount.
void QAudioSink::setVolume(qreal volume)
Stellt die Ausgangslautstärke auf „ volume “ ein.
Die Lautstärke wird linear von 0.0 (Stille) bis 1.0 (volle Lautstärke) skaliert. Werte außerhalb dieses Bereichs werden begrenzt.
Die Standardlautstärke beträgt 1.0.
Hinweis: Änderungen an der Lautstärke wirken sich auf die Lautstärke dieses Audiostreams aus, nicht auf die globale Lautstärke.
Lautstärkeregler in der Benutzeroberfläche sollten in der Regel nichtlinear skaliert werden. Die Verwendung einer logarithmischen Skala führt beispielsweise zu linearen Änderungen der wahrgenommenen Lautstärke, was ein Benutzer normalerweise von einem Lautstärkeregler erwarten würde. Weitere Details finden Sie unter QtAudio::convertVolume().
Siehe auch volume().
QIODevice *QAudioSink::start()
Gibt einen Zeiger auf das interne „ QIODevice “ zurück, das zur Übertragung von Daten an den Audioausgang des Systems verwendet wird. Das Gerät ist bereits geöffnet, und mit ` write()` können Daten direkt in dieses geschrieben werden.
Hinweis: Der Zeiger wird ungültig, sobald der Stream gestoppt wird oder wenn Sie einen anderen Stream starten.
Wenn der „ QAudioSink “ auf das Audiogerät des Systems zugreifen kann, gibt „ state()“ „ QtAudio::IdleState “ zurück, „ error()“ gibt „ QtAudio::NoError “ zurück und das Signal „ stateChanged()“ wird ausgelöst.
Tritt während dieses Vorgangs ein Problem auf, gibt error() den Wert „ QtAudio::OpenError “ zurück, state() den Wert „ QtAudio::StoppedState “ und das Signal „ stateChanged()“ wird ausgelöst.
Siehe auch QIODevice und QIODevice interface.
[since 6.11] template <typename Callback> requires QtAudio::if_audio_sink_callback<Callback> void QAudioSink::start(Callback &&cb)
Startet den „ QAudioSink “ mit einer Callback-Funktion, die in einem Soft-Realtime-Audio-Thread aufgerufen wird. Der Callback ist ein Callable, das ein „ QSpan<SampleType>“ als Argument entgegennimmt; „SampleType“ muss mit dem „ QAudioFormat::SampleFormat “ des Formats des „ QAudioSink “ übereinstimmen. Der Bereich muss mit verschachtelten Audiodaten gefüllt sein.
Wenn der „ QAudioSink “ erfolgreich gestartet werden kann, gibt „ error()“ „ QtAudio::NoError “ zurück.
Tritt während dieses Vorgangs ein Problem auf, gibt „ error()“ „ QtAudio::OpenError “ zurück, „ state()“ gibt „ QtAudio::StoppedState “ zurück und das Signal „ stateChanged()“ wird ausgelöst.
Hinweis: Diese API ist nur auf Plattformen verfügbar, die die Callback-API unterstützen: Apples CoreAudio (macOS, iOS usw.), Windows, Linux (mit dem PulseAudio- oder PipeWire-Backend) und Android.
Hinweis: Der Callback wird in einem Soft-Echtzeit-Audio-Thread aufgerufen. Es ist wichtig sicherzustellen, dass der Callback nicht blockiert, da dies zu Audio-Störungen oder Aussetzern führen kann. Dazu gehören blockierende E/A-Vorgänge, das Sperren von Mutexen, die Zuweisung von Speicher oder andere Operationen, die zu einer Blockierung führen können. Bewährte Vorgehensweisen finden Sie in Ross Bencinas Artikel „Real-time audio programming 101: time waits for nothing“. Ziehen Sie außerdem die Verwendung des Realtime-Sanitizers von Clang in Betracht, um den Audio-Callback zu validieren.
Diese Funktion wurde in Qt 6.11 eingeführt.
Siehe auch „ Callback interface “.
void QAudioSink::start(QIODevice *device)
Startet die Übertragung von Audiodaten vom „ device “ an den Audioausgang des Systems. Das „ device “ muss im Modus „ ReadOnly “ oder „ ReadWrite “ geöffnet worden sein.
Wenn der „ QAudioSink “ Audiodaten erfolgreich ausgeben kann, gibt „ state()“ „ QtAudio::ActiveState “ zurück, „ error()“ gibt „ QtAudio::NoError “ zurück und das Signal „ stateChanged()“ wird ausgelöst.
Tritt während dieses Vorgangs ein Problem auf, gibt error() den Wert „ QtAudio::OpenError “ zurück, state() den Wert „ QtAudio::StoppedState “ und das Signal „ stateChanged()“ wird ausgelöst.
Siehe auch „ QIODevice “ und „ QIODevice interface “.
QtAudio::State QAudioSink::state() const
Gibt den Status der Audioverarbeitung zurück.
[signal] void QAudioSink::stateChanged(QtAudio::State state)
Dieses Signal wird ausgelöst, wenn sich die Eigenschaft „ state “ des Geräts geändert hat. Dies ist der aktuelle Zustand des Audioausgangs.
Hinweis: Der Namensraum „ QtAudio “ hieß bis einschließlich Qt 6.6 „QAudio“. Bei stringbasierten Verbindungen zu diesem Signal muss als Parametertyp „ QAudio::State “ verwendet werden: connect(source, SIGNAL(stateChanged(QAudio::State)), ...);
void QAudioSink::stop()
Beendet die Audioausgabe und trennt die Verbindung zur Systemressource.
Setzt „ error “ () auf „ QtAudio::NoError “, „ state “ () auf „ QtAudio::StoppedState “ und sendet das Signal „ stateChanged “ ().
Hinweis: Unter Linux und Darwin wird bei diesem Vorgang der zugrunde liegende Audio-Puffer synchron geleert, was je nach Pufferinhalt zu Verzögerungen führen kann. Um alle Puffer sofort zurückzusetzen, verwenden Sie stattdessen die Methode ` reset `.
Siehe auch ` reset()`.
void QAudioSink::suspend()
Beendet die Verarbeitung von Audiodaten, wobei die gepufferten Audiodaten erhalten bleiben.
Setzt „ state()“ auf „ QtAudio::SuspendedState “ und gibt das Signal „ stateChanged()“ aus.
qreal QAudioSink::volume() const
Gibt den Lautstärkewert zwischen 0,0 und 1,0 (einschließlich) zurück.
Siehe auch „ setVolume()“.
© 2026 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.