原文:http://www.verydemo.com/demo_c134_i40117.html
在文章的开始出,总是先要对AudioQueue有一个总体的认识。
ios的AudioQueue,是一个可以录制和播放音频的对象,AudioQueue负责以下几方面的工作:
---连接音频硬件。
---管理内存。
---对需要解码的音频文件进行解码。
---调节(mediating)回放或录音的效果。
有了AudioQueue服务,我们可以播放 linear PCM文件、部分压缩文件(如aac等)、其他格式用户有解码器的文件;它还支持多个audioQueue的回放混合以及音频和视频的同步等。
Controlling Audio Queues包括:AudioQueueStart,AudioQueuePrime,AudioQueueFlush,
AudioQueueStop,AudioQueuePause,AudioQueueReset六个部分。
1,AudioQueueStart
函数功能:开始播放或者录制音频。
函数原型:
OSStatus AudioQueueStart (
AudioQueueRef inAQ,
const AudioTimeStamp *inStartTime
);
参数解析:
inAQ:将要被启动的队列的实例.
inStartTime:这个音频队列实例开始的时间。如果需要指定一个时间的话,要根据AudioTimeStamp创建一个结构。如果这个参数传NULL的话,表明这个audioQueue队列应该尽快开启。(as soon as possible)】
调用实例:
XThrowIfError(AudioQueueStart(myInfo.mQueue, NULL), "AudioQueueStart failed");
2,AudioQueuePrime
函数功能:对已经进入AudioQueue中的缓冲进行解码,为回放做准备。
函数原型:
AudioQueueRef inAQ,
UInt32 inNumberOfFramesToPrepare,
UInt32 *outNumberOfFramesPrepared
);
AudioQueueRef inAQ
);
AudioQueueRef inAQ,
Boolean inImmediate
);
AudioQueueRef inAQ
);
AudioQueueRef inAQ
);