PySide6.QtMultimedia.QAudioSink¶
- class QAudioSink¶
- The - QAudioSinkclass provides an interface for sending audio data to an audio output device. More…- Synopsis¶- Methods¶- def - __init__()
- def - bufferSize()
- def - bytesFree()
- def - elapsedUSecs()
- def - error()
- def - format()
- def - isNull()
- def - processedUSecs()
- def - reset()
- def - resume()
- def - setBufferSize()
- def - setVolume()
- def - start()
- def - state()
- def - stop()
- def - suspend()
- def - volume()
 - Signals¶- def - stateChanged()
 - Note - This documentation may contain snippets that were automatically translated from C++ to Python. We always welcome contributions to the snippet translation. If you see an issue with the translation, you can also let us know by creating a ticket on https:/bugreports.qt.io/projects/PYSIDE - Detailed Description¶- Warning - This section contains snippets that were automatically translated from C++ to Python and may contain errors. - You can construct an audio output with the system’s default audio output device. It is also possible to create - QAudioSinkwith a specific- QAudioDevice. When you create the audio output, you should also send in the- QAudioFormatto be used for the playback (see the- QAudioFormatclass description for details).- To play a file: - Starting to play an audio stream is simply a matter of calling - start()with a QIODevice.- QAudioSinkwill then fetch the data it needs from the io device. So playing back an audio file is as simple as:- QFile sourceFile # class member. QAudioSink* audio # class member. sourceFile.setFileName("/tmp/test.raw") sourceFile.open(QIODevice.ReadOnly) format = QAudioFormat() # Set up the format, eg. format.setSampleRate(8000) format.setChannelCount(1) format.setSampleFormat(QAudioFormat.UInt8) info = QAudioDevice(QMediaDevices.defaultAudioOutput()) if not info.isFormatSupported(format): qWarning() << "Raw audio format not supported by backend, cannot play audio." return audio = QAudioSink(format, self) audio.connect(QAudioSink::stateChanged, self.handleStateChanged) audio.start(sourceFile) - The file will start playing assuming that the audio system and output device support it. If you run out of luck, check what’s up with the - error()function.- After the file has finished playing, we need to stop the device: - def stopAudioOutput(self): audio.stop() sourceFile.close() del audio - At any given time, the - QAudioSinkwill be in one of four states: active, suspended, stopped, or idle. These states are described by the- Stateenum. State changes are reported through the- stateChanged()signal. You can use this signal to, for instance, update the GUI of the application; the mundane example here being changing the state of a- play/pausebutton. You request a state change directly with- suspend(),- stop(),- reset(),- resume(), and- start().- If an error occurs, you can fetch the - error typewith the- error()function. Please see the- Errorenum for a description of the possible errors that are reported. When- UnderrunErroris encountered, the state changes to- IdleState, when another error is encountered, the state changes to- StoppedState. You can check for errors by connecting to the- stateChanged()signal:- def handleStateChanged(self, newState): if newState == QAudio.IdleState: # Finished playing (no more data) AudioOutputExample::stopAudioOutput() break elif newState == QAudio.StoppedState: # Stopped for other reasons if audio.error() != QAudio.NoError: # Error handling break else: # ... other cases as appropriate break - See also - __init__([format=QAudioFormat()[, parent=None]])¶
- Parameters:
- format – - QAudioFormat
- parent – - QObject
 
 
 - Construct a new audio output and attach it to - parent. The default audio output device is used with the output- formatparameters.- __init__(audioDeviceInfo[, format=QAudioFormat()[, parent=None]])
- Parameters:
- audioDeviceInfo – - QAudioDevice
- format – - QAudioFormat
- parent – - QObject
 
 
 - Construct a new audio output and attach it to - parent. The device referenced by- audioDeviceis used with the output- formatparameters.- bufferSize()¶
- Return type:
- int 
 
 - Returns the audio buffer size in bytes. - If called before - start(), returns platform default value. If called before- start()but- setBufferSize()was called prior, returns value set by- setBufferSize(). If called after- start(), returns the actual buffer size being used. This may not be what was set previously by- setBufferSize().- See also - bytesFree()¶
- Return type:
- int 
 
 - Returns the number of free bytes available in the audio buffer. - Note - The returned value is only valid while in - ActiveStateor- IdleStatestate, otherwise returns zero.- elapsedUSecs()¶
- Return type:
- int 
 
 - Returns the microseconds since - start()was called, including time in Idle and Suspend states.- Returns the error state. - format()¶
- Return type:
 
 - Returns the - QAudioFormatbeing used.- isNull()¶
- Return type:
- bool 
 
 - Returns - trueis the- QAudioSinkinstance is- null, otherwise returns- false.- processedUSecs()¶
- Return type:
- int 
 
 - Returns the amount of audio data processed since - start()was called (in microseconds).- reset()¶
 - Immediately halts audio output and discards any audio data currently in the buffers. All pending audio data pushed to QIODevice is ignored. - See also - resume()¶
 - Resumes processing audio data after a - suspend().- Sets - state()to the state the sink had when- suspend()was called, and sets- error()to QAudioError::NoError. This function does nothing if the audio sink’s state is not- SuspendedState.- setBufferSize(bytes)¶
- Parameters:
- bytes – int 
 
 - Sets the audio buffer size to - valuein bytes.- Note - This function can be called anytime before - start(). Calls to this are ignored after- start(). It should not be assumed that the buffer size set is the actual buffer size used - call- bufferSize()anytime after- start()to return the actual buffer size being used.- See also - setVolume(volume)¶
- Parameters:
- volume – float 
 
 - Sets the output volume to - volume.- The volume is scaled linearly from - 0.0(silence) to- 1.0(full volume). Values outside this range will be clamped.- The default volume is - 1.0.- Note - Adjustments to the volume will change the volume of this audio stream, not the global volume. - UI volume controls should usually be scaled non-linearly. For example, using a logarithmic scale will produce linear changes in perceived loudness, which is what a user would normally expect from a volume control. See - convertVolume()for more details.- See also - Returns a pointer to the internal QIODevice being used to transfer data to the system’s audio output. The device will already be open and write() can write data directly to it. - Note - The pointer will become invalid after the stream is stopped or if you start another stream. - If the - QAudioSinkis able to access the system’s audio device,- state()returns- IdleState,- error()returns- NoErrorand the- stateChanged()signal is emitted.- If a problem occurs during this process, - error()returns- OpenError,- state()returns- StoppedStateand the- stateChanged()signal is emitted.- See also - start(device)
- Parameters:
- device – - QIODevice
 
 - Starts transferring audio data from the - deviceto the system’s audio output. The- devicemust have been opened in the ReadOnly or ReadWrite modes.- If the - QAudioSinkis able to successfully output audio data,- state()returns- ActiveState,- error()returns- NoErrorand the- stateChanged()signal is emitted.- If a problem occurs during this process, - error()returns- OpenError,- state()returns- StoppedStateand the- stateChanged()signal is emitted.- See also - Returns the state of audio processing. - This signal is emitted when the device - statehas changed. This is the current state of the audio output.- Note - The QtAudio namespace was named QAudio up to and including Qt 6.6. String-based connections to this signal have to use - QAudio::Stateas the parameter type:- connect(source, SIGNAL(stateChanged(QAudio::State)), ...);- stop()¶
 - Stops the audio output, detaching from the system resource. - Sets - error()to- NoError,- state()to- StoppedStateand emit- stateChanged()signal.- Note - On Linux, and Darwin, this operation synchronously drains the underlying audio buffer, which may cause delays accordingly to the buffer payload. To reset all the buffers immediately, use the method - resetinstead.- See also - suspend()¶
 - Stops processing audio data, preserving buffered audio data. - Sets - error()to- NoError,- state()to- SuspendedStateand emits- stateChanged()signal.- volume()¶
- Return type:
- float 
 
 - Returns the volume between 0.0 and 1.0 inclusive. - See also