QAudioInput Class Reference

[QtMultimedia module]

该QAudioInput类提供用于从音频输入设备接收音频数据的接口。More…

继承QObject

Methods

  • __init__ (self, QAudioFormat format = QAudioFormat(), QObject parent = None)
  • __init__ (self, QAudioDeviceInfo audioDevice, QAudioFormat format = QAudioFormat(), QObject parent = None)
  • int bufferSize (self)
  • int bytesReady (self)
  • int elapsedUSecs (self)
  • QAudio.Error error (self)
  • QAudioFormat format (self)
  • int notifyInterval (self)
  • int periodSize (self)
  • int processedUSecs (self)
  • reset (self)
  • resume (self)
  • setBufferSize (self, int bytes)
  • setNotifyInterval (self, int milliSeconds)
  • start (self, QIODevice device)
  • QIODevice start (self)
  • QAudio.State state (self)
  • stop (self)
  • suspend (self)

Qt Signals

  • void notify ()
  • void stateChanged (QAudio::State)

Detailed Description

该QAudioInput类提供用于从音频输入设备接收音频数据的接口。

可以构造与系统的音频输入default audio input device。它也可能与特定的创建QAudioInputQAudioDeviceInfo。当您创建了音频输入,你也应该送的QAudioFormat用于记录(见QAudioFormat类描述详情) 。

要录制到一个文件:

QAudioInput让您录制音频,音频输入设备。这个类的默认构造函数将使用系统默认的音频设备,但您也可以指定一个QAudioDeviceInfo对于特定的设备。您还需要通过在QAudioFormat要在其中进行录制。

启动了QAudioInput是简单地调用的问题start( )与QIODevice打开以进行写入。例如,记录到一个文件中,您可以:

  1. [QFile]($docs-qfile.html) outputFile; // class member.
  2. QAudioInput *audioInput; // class member.
  3. ...
  4. void startRecording()
  5. {
  6. outputFile.setFileName("/tmp/test.raw");
  7. outputFile.open( [QIODevice]($docs-qiodevice.html).WriteOnly | [QIODevice]($docs-qiodevice.html).Truncate );
  8. [QAudioFormat]($docs-qaudioformat.html) format;
  9. // set up the format you want, eg.
  10. format.setFrequency(8000);
  11. format.setChannels(1);
  12. format.setSampleSize(8);
  13. format.setCodec("audio/pcm");
  14. format.setByteOrder([QAudioFormat]($docs-qaudioformat.html).LittleEndian);
  15. format.setSampleType([QAudioFormat]($docs-qaudioformat.html).UnSignedInt);
  16. [QAudioDeviceInfo]($docs-qaudiodeviceinfo.html) info = [QAudioDeviceInfo]($docs-qaudiodeviceinfo.html).defaultInputDevice();
  17. if (!info.isFormatSupported(format)) {
  18. qWarning()<<"default format not supported try to use nearest";
  19. format = info.nearestFormat(format);
  20. }
  21. audioInput = new QAudioInput(format, this);
  22. [QTimer](qtimer.html).singleShot(3000, this, SLOT(stopRecording()));
  23. audioInput->start(&outputFile);
  24. // Records audio for 3000ms
  25. }

如果指定的格式是支持的输入设备即会开始拍摄(你可以通过检查QAudioDeviceInfo.isFormatSupported( ) 。万一有任何障碍,则使用error( )函数来检查哪里出了问题。我们在停止录制stopRecording()插槽。

  1. void stopRecording()
  2. {
  3. audioInput->stop();
  4. outputFile.close();
  5. delete audioInput;
  6. }

在任何时间点, QAudioInput将在四种状态之一:主动,暂停,停止或閒置。这些状态是由指定的QAudio.State枚举。您可以直接通过请求状态变化suspend( )resume( )stop( )reset()和start( ) 。当前状态被报告的state( ) 。QAudioOutput也将标志着你当状态变化(stateChanged())。

QAudioInput提供测量时间的几种方法以来已经经过的start记录的() 。该processedUSecs()函数返回流的长度以书面微秒,即,它留下了时代的音频输入被暂停或閒置。该elapsedUSecs( )函数返回自所经过的时间start( )被调用,无论哪种状态下QAudioInput已经英寸的

如果发生错误,您可以获取其原因与error( ) 。可能的错误的原因是由所描述的QAudio.Error枚举。该QAudioInput将进入StoppedState当遇到错误。连接到stateChanged( )信号来处理错误:

  1. void stateChanged([QAudio](qaudio.html).State newState)
  2. {
  3. switch(newState) {
  4. case [QAudio](qaudio.html).StoppedState:
  5. if (audioInput->error() != [QAudio](qaudio.html).NoError) {
  6. // Perform error handling
  7. } else {
  8. }
  9. break;

Symbian Platform Security Requirements

在Symbian ,它使用这个类的进程必须有UserEnvironment平台的安全能力。如果客户端程序缺乏这种能力,调用任过载start( )将失败。此故障是由QAudioInput对象设置表示其error( )值QAudio.OpenError然后散发出stateChangedQAudio.StoppedState)信号。

平台的安全功能是通过添加TARGET.CAPABILITYqmake的变量。


Method Documentation

  1. QAudioInput.__init__ (self, QAudioFormat format = QAudioFormat(), QObject parent = None)

parent的说法,如果不是没有,原因self通过Qt的,而不是PyQt的拥有。

构造一个新的音频输入,并将它附加到parent。默认的音频输入设备是用来与输出format参数。

  1. QAudioInput.__init__ (self, QAudioDeviceInfo audioDevice, QAudioFormat format = QAudioFormat(), QObject parent = None)

parent的说法,如果不是没有,原因self通过Qt的,而不是PyQt的拥有。

构造一个新的音频输入,并将它附加到parent。通过引用的设备audioDevice用于与所述输入format参数。

  1. int QAudioInput.bufferSize (self)

返回以毫秒为单位的音频缓冲器的大小。

如果之前调用start( ) ,返回平台的默认值。如果之前调用start(),但setBufferSize( )之前被调用,返回值被设置setBufferSize( ) 。如果所谓的后start()时,返回所使用的实际的缓冲区大小。这可能不是通过预先设定的setBufferSize( ) 。

See also setBufferSize( ) 。

  1. int QAudioInput.bytesReady (self)

返回的音频数据提供给读出以字节为单位的量。

注:返回值是唯一有效的,而在QAudio.ActiveState or QAudio.IdleState状态,否则返回零。

  1. int QAudioInput.elapsedUSecs (self)

返回微秒,因为start( )被调用,包括时间,空閒和待机状态。

  1. QAudio.Error QAudioInput.error (self)

[

返回的错误状态。

]($docs-qaudio.html#Error-enum)

  1. QAudioFormat QAudioInput.format (self)

返回QAudioFormat被使用。

  1. int QAudioInput.notifyInterval (self)

返回以毫秒为单位的通知时间间隔。

See also setNotifyInterval( ) 。

  1. int QAudioInput.periodSize (self)

返回以字节为单位的周期大小。

注:这是在字节读取的所建议的大小。

  1. int QAudioInput.processedUSecs (self)

返回音频数据的自处理的量start( )被调用以微秒为单位。

  1. QAudioInput.reset (self)

滴在缓冲区所有的音频数据,缓冲区复位到零。

  1. QAudioInput.resume (self)

恢复后处理音频数据suspend( ) 。

Sets error()来QAudio.NoError。套state()来QAudio.ActiveState如果您以前调用start (QIODevice*)。套state()来QAudio.IdleState如果您以前叫start( ) 。发射stateChanged()信号。

  1. QAudioInput.setBufferSize (self, int bytes)

设置音频缓冲区的大小为value毫秒。

注:此功能可以在任何时候之前调用start( ) ,调用此之后将被忽略start( ) 。它不应该被假定缓冲区的大小设置为实际使用的缓冲区大小,调用bufferSize()后随时start()将返回所用的实际的缓冲区大小。

See also bufferSize( ) 。

  1. QAudioInput.setNotifyInterval (self, int milliSeconds)

设置的时间间隔notify()信号被发射。这是基于ms处理不实际的实时音频数据。定时器的最小分辨率为特定平台和值应进行检查notifyInterval( )确认正在使用的实际值。

See also notifyInterval( ) 。

  1. QAudioInput.start (self, QIODevice device)

使用device作为QIODevice来传输数据。传递QIODevice允许数据被无任何额外的代码传输。所有需要的是打开QIODeviceQAudioInput不采取所有权device

QAudioInput将数据写入设备时,新的数据是可用的。你可以继承QIODevice并重新实现writeData()如果你想访问的数据。如果您只是想将数据保存到一个文件中,你可以通过一个QFile此功能。

如果能够成功地获得音频数据从系统音频设备state()被设置为QAudio.ActiveState or QAudio.IdleStateerror( )被设置为QAudio.NoErrorstateChanged()信号被发射。

如果在这个过程中发生问题的error( )被设置为QAudio.OpenErrorstate( )被设置为QAudio.StoppedStatestateChanged()信号被发射。

QAudioInput#Symbian Platform Security Requirements

See also QIODevice

  1. QIODevice QAudioInput.start (self)

返回一个指针,一个新的QIODevice将用于处理数据传输。这QIODevice可用于read()音频数据直接。你通常会连接到readyRead()信号,并从该设备中的时隙读取您连接到。QAudioInput保持设备的所有权。

如果能够访问该系统音频设备的state( )被设置为QAudio.IdleStateerror( )被设置为QAudio.NoErrorstateChanged()信号被发射。

如果在这个过程中发生问题的error( )被设置为QAudio.OpenErrorstate( )被设置为QAudio.StoppedStatestateChanged()信号被发射。

QAudioInput#Symbian Platform Security Requirements

See also QIODevice

  1. QAudio.State QAudioInput.state (self)

[

返回音频处理的状态。

  1. QAudioInput.stop (self)

停止音频输入,从系统资源分离。

]($docs-qaudio.html#State-enum)

Sets error()来QAudio.NoErrorstate()来QAudio.StoppedState并放出stateChanged()信号。

  1. QAudioInput.suspend (self)

停止处理的音频数据,保存缓冲音频数据。

Sets error()来QAudio.NoErrorstate()来QAudio.SuspendedState并放出stateChanged()信号。


Qt Signal Documentation

  1. void notify ()

这是该信号的默认超载。

当音频数据x毫秒已被处理的时间间隔由setNotifyInterval ( x)的设置这个信号被发射。

  1. void stateChanged (QAudio::State)

这是该信号的默认超载。

这个信号被发射时,该设备state已经改变。