Home · All Classes · Modules  · QSS HELP  · QSS 案例 · VER007 HOME

QAudioInput Class Reference
[QtMultimedia module]

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

继承QObject

Methods

Qt Signals


Detailed Description

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

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

要录制到一个文件:

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

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

     QFile outputFile;         // class member.
     QAudioInput *audioInput;  // class member.
     ...
     void startRecording()
     {
         outputFile.setFileName("/tmp/test.raw");
         outputFile.open( QIODevice.WriteOnly | QIODevice.Truncate );

         QAudioFormat format;
         // set up the format you want, eg.
         format.setFrequency(8000);
         format.setChannels(1);
         format.setSampleSize(8);
         format.setCodec("audio/pcm");
         format.setByteOrder(QAudioFormat.LittleEndian);
         format.setSampleType(QAudioFormat.UnSignedInt);

         QAudioDeviceInfo info = QAudioDeviceInfo.defaultInputDevice();
         if (!info.isFormatSupported(format)) {
             qWarning()<<"default format not supported try to use nearest";
             format = info.nearestFormat(format);
         }

         audioInput = new QAudioInput(format, this);
         QTimer.singleShot(3000, this, SLOT(stopRecording()));
         audioInput->start(&outputFile);
         // Records audio for 3000ms
     }

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

     void stopRecording()
     {
         audioInput->stop();
         outputFile.close();
         delete audioInput;
     }

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

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

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

     void stateChanged(QAudio.State newState)
     {
         switch(newState) {
             case QAudio.StoppedState:
             if (audioInput->error() != QAudio.NoError) {
                  // Perform error handling
             } else {

             }
             break;

Symbian Platform Security Requirements

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

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


Method Documentation

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

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

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

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

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

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

int QAudioInput.bufferSize (self)

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

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

See also setBufferSize( ) 。

int QAudioInput.bytesReady (self)

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

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

int QAudioInput.elapsedUSecs (self)

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

QAudio.Error QAudioInput.error (self)

返回的错误状态。

QAudioFormat QAudioInput.format (self)

返回QAudioFormat被使用。

int QAudioInput.notifyInterval (self)

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

See also setNotifyInterval( ) 。

int QAudioInput.periodSize (self)

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

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

int QAudioInput.processedUSecs (self)

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

QAudioInput.reset (self)

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

QAudioInput.resume (self)

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

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

QAudioInput.setBufferSize (self, int bytes)

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

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

See also bufferSize( ) 。

QAudioInput.setNotifyInterval (self, int milliSeconds)

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

See also notifyInterval( ) 。

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

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

QAudio.State QAudioInput.state (self)

返回音频处理的状态。

QAudioInput.stop (self)

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

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

QAudioInput.suspend (self)

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

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


Qt Signal Documentation

void notify ()

这是该信号的默认超载。

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

void stateChanged (QAudio::State)

这是该信号的默认超载。

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




PyQt 4.10.3 for X11 Copyright © Riverbank Computing Ltd and Nokia 2012 Qt 4.8.5