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打开以进行写入。例如,记录到一个文件中,您可以:
[QFile]($docs-qfile.html) outputFile; // class member.
QAudioInput *audioInput; // class member.
...
void startRecording()
{
outputFile.setFileName("/tmp/test.raw");
outputFile.open( [QIODevice]($docs-qiodevice.html).WriteOnly | [QIODevice]($docs-qiodevice.html).Truncate );
[QAudioFormat]($docs-qaudioformat.html) format;
// set up the format you want, eg.
format.setFrequency(8000);
format.setChannels(1);
format.setSampleSize(8);
format.setCodec("audio/pcm");
format.setByteOrder([QAudioFormat]($docs-qaudioformat.html).LittleEndian);
format.setSampleType([QAudioFormat]($docs-qaudioformat.html).UnSignedInt);
[QAudioDeviceInfo]($docs-qaudiodeviceinfo.html) info = [QAudioDeviceInfo]($docs-qaudiodeviceinfo.html).defaultInputDevice();
if (!info.isFormatSupported(format)) {
qWarning()<<"default format not supported try to use nearest";
format = info.nearestFormat(format);
}
audioInput = new QAudioInput(format, this);
[QTimer](qtimer.html).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](qaudio.html).State newState)
{
switch(newState) {
case [QAudio](qaudio.html).StoppedState:
if (audioInput->error() != [QAudio](qaudio.html).NoError) {
// Perform error handling
} else {
}
break;
Symbian Platform Security Requirements
在Symbian ,它使用这个类的进程必须有UserEnvironment
平台的安全能力。如果客户端程序缺乏这种能力,调用任过载start( )将失败。此故障是由QAudioInput对象设置表示其error( )值QAudio.OpenError然后散发出stateChanged(QAudio.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)
[
返回的错误状态。
]($docs-qaudio.html#Error-enum)
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允许数据被无任何额外的代码传输。所有需要的是打开QIODevice。QAudioInput不采取所有权device。
该QAudioInput将数据写入设备时,新的数据是可用的。你可以继承QIODevice并重新实现writeData()如果你想访问的数据。如果您只是想将数据保存到一个文件中,你可以通过一个QFile此功能。
如果能够成功地获得音频数据从系统音频设备state()被设置为QAudio.ActiveState or QAudio.IdleState,error( )被设置为QAudio.NoError和stateChanged()信号被发射。
如果在这个过程中发生问题的error( )被设置为QAudio.OpenError,state( )被设置为QAudio.StoppedState和stateChanged()信号被发射。
QAudioInput#Symbian Platform Security Requirements
See also QIODevice。
QIODevice QAudioInput.start (self)
返回一个指针,一个新的QIODevice将用于处理数据传输。这QIODevice可用于read()音频数据直接。你通常会连接到readyRead()信号,并从该设备中的时隙读取您连接到。QAudioInput保持设备的所有权。
如果能够访问该系统音频设备的state( )被设置为QAudio.IdleState,error( )被设置为QAudio.NoError和stateChanged()信号被发射。
如果在这个过程中发生问题的error( )被设置为QAudio.OpenError,state( )被设置为QAudio.StoppedState和stateChanged()信号被发射。
QAudioInput#Symbian Platform Security Requirements
See also QIODevice。
QAudio.State QAudioInput.state (self)
[
返回音频处理的状态。
QAudioInput.stop (self)
停止音频输入,从系统资源分离。
]($docs-qaudio.html#State-enum)
Sets error()来QAudio.NoError,state()来QAudio.StoppedState并放出stateChanged()信号。
QAudioInput.suspend (self)
停止处理的音频数据,保存缓冲音频数据。
Sets error()来QAudio.NoError,state()来QAudio.SuspendedState并放出stateChanged()信号。
Qt Signal Documentation
void notify ()
这是该信号的默认超载。
当音频数据x毫秒已被处理的时间间隔由setNotifyInterval ( x)的设置这个信号被发射。
void stateChanged (QAudio::State)
这是该信号的默认超载。
这个信号被发射时,该设备state已经改变。