PySide6.QtMultimedia.QAudioSource¶
- class QAudioSource¶
- The - QAudioSourceclass provides an interface for receiving audio data from an audio input device. More…- Synopsis¶- Methods¶- def - __init__()
- def - bufferSize()
- def - bytesAvailable()
- 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 input with the system’s default audio input device. It is also possible to create - QAudioSourcewith a specific- QAudioDevice. When you create the audio input, you should also send in the- QAudioFormatto be used for the recording (see the- QAudioFormatclass description for details).- To record to a file: - QAudioSourcelets you record audio with an audio input device. The default constructor of this class will use the systems default audio device, but you can also specify a- QAudioDevicefor a specific device. You also need to pass in the- QAudioFormatin which you wish to record.- Starting up the - QAudioSourceis simply a matter of calling- start()with a QIODevice opened for writing. For instance, to record to a file, you can:- QFile destinationFile # Class member QAudioSource* audio # Class member destinationFile.setFileName("/tmp/test.raw") destinationFile.open( QIODevice.WriteOnly | QIODevice.Truncate ) format = QAudioFormat() # Set up the desired format, for example: format.setSampleRate(8000) format.setChannelCount(1) format.setSampleFormat(QAudioFormat.UInt8) info = QMediaDevices.defaultAudioInput() if not info.isFormatSupported(format): qWarning() << "Default format not supported, trying to use the nearest." audio = QAudioSource(format, self) audio.stateChanged.connect(self.handleStateChanged) QTimer::singleShot(3000, self.stopRecording) audio.start(destinationFile) # Records audio for 3000ms - This will start recording if the format specified is supported by the input device (you can check this with - isFormatSupported(). In case there are any snags, use the- error()function to check what went wrong. We stop recording in the- stopRecording()slot.- def stopRecording(self): audio.stop() destinationFile.close() del audio - At any point in time, - QAudioSourcewill be in one of four states: active, suspended, stopped, or idle. These states are specified by the- Stateenum. You can request a state change directly through- suspend(),- resume(),- stop(),- reset(), and- start(). The current state is reported by- state().- QAudioSinkwill also signal you when the state changes (- stateChanged()).- QAudioSourceprovides several ways of measuring the time that has passed since the- start()of the recording. The- processedUSecs()function returns the length of the stream in microseconds written, i.e., it leaves out the times the audio input was suspended or idle. The- elapsedUSecs()function returns the time elapsed since- start()was called regardless of which states the- QAudioSourcehas been in.- If an error should occur, you can fetch its reason with - error(). The possible error reasons are described by the- Errorenum. The- QAudioSourcewill enter the- StoppedStatewhen an error is encountered. Connect to the- stateChanged()signal to handle the error:- def handleStateChanged(self, newState): if newState == QAudio.StoppedState: if audio.error() != QAudio.NoError: # Error handling else: # Finished recording break elif newState == QAudio.ActiveState: # Started recording - read from IO device break else: # ... other cases as appropriate break - See also - __init__([format=QAudioFormat()[, parent=None]])¶
- Parameters:
- format – - QAudioFormat
- parent – - QObject
 
 
 - Construct a new audio input and attach it to - parent. The default audio input device is used with the output- formatparameters.- __init__(audioDeviceInfo[, format=QAudioFormat()[, parent=None]])
- Parameters:
- audioDeviceInfo – - QAudioDevice
- format – - QAudioFormat
- parent – - QObject
 
 
 - Construct a new audio input and attach it to - parent. The device referenced by- audioDeviceis used with the input- 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 - bytesAvailable()¶
- Return type:
- int 
 
 - Returns the amount of audio data available to read in bytes. - Note: 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 - trueif the audio source is- null, otherwise returns- false.- processedUSecs()¶
- Return type:
- int 
 
 - Returns the amount of audio data processed since - start()was called in microseconds.- reset()¶
 - Drops all audio data in the buffers, resets buffers to zero. - resume()¶
 - Resumes processing audio data after a - suspend().- Sets - error()to- NoError. Sets- state()to- ActiveStateif you previously called start(QIODevice*). Sets- state()to- IdleStateif you previously called- start(). emits- stateChanged()signal.- setBufferSize(bytes)¶
- Parameters:
- bytes – int 
 
 - Sets the audio buffer size to - valuebytes.- 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, calling- bufferSize()anytime after- start()will return the actual buffer size being used.- See also - setVolume(volume)¶
- Parameters:
- volume – float 
 
 - Sets the input volume to - volume.- The volume is scaled linearly from - 0.0(silence) to- 1.0(full volume). Values outside this range will be clamped.- If the device does not support adjusting the input volume then - volumewill be ignored and the input volume will remain at 1.0.- The default volume is - 1.0.- Note: Adjustments to the volume will change the volume of this audio stream, not the global volume. - See also - Returns a pointer to the internal QIODevice being used to transfer data from the system’s audio input. The device will already be open and read() can read data directly from it. - Note - The pointer will become invalid after the stream is stopped or if you start another stream. - If the - QAudioSourceis 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 system’s audio input to the - device. The- devicemust have been opened in the WriteOnly, Append or ReadWrite modes.- If the - QAudioSourceis able to successfully get audio data,- state()returns either- ActiveStateor- 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 - Returns the state of audio processing. - This signal is emitted when the device - statehas changed.- 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 input, detaching from the system resource. - Sets - error()to- NoError,- state()to- StoppedStateand emit- stateChanged()signal.- suspend()¶
 - Stops processing audio data, preserving buffered audio data. - Sets - error()to- NoError,- state()to- SuspendedStateand emit- stateChanged()signal.- volume()¶
- Return type:
- float 
 
 - Returns the input volume. - If the device does not support adjusting the input volume the returned value will be 1.0. - See also