0
在我的应用程序中,我将通过线性PCM格式的套接字接收音频数据,时间间隔统一,约为50 ms, 我使用AudioQueue播放音频数据我称为最从AudioQueue SpeakHere实施例的代码唯一的区别是我需要在Mac OS运行它的,AudioQueue,回调没有统一到播放音频
以下是相关的一段代码,
设置AudioBufferDescription格式,
FillOutASBDForLPCM (sRecordFormat,
16000,
1,
16,
16,
false,
false
);
分配缓冲区来保存和播放数据
for (int i = 0; i < kNumberBuffersPLyer; ++i) {
XThrowIfError(AudioQueueAllocateBuffer(mQueue, bufferByteSize, &mBuffers[i]),
"AudioQueueAllocateBuffer failed");
}
哪里bufferByteSize是640和缓冲区的数目是3
要启动队列,
OSStatus errorCode = AudioQueueStart(mQueue,NULL);
现在,事情是,我期待,它应该自动打回调当它播放缓冲区,但它不会发生时,
因此,当我得到缓冲区,我排队缓冲区,这是代码
void AudioStream::startQueueIfNeeded(){
SetLooping(true);
// prime the queue with some data before starting
for (int i = 0; i < kNumberBuffersPLyer; ++i)
{
AQBufferCallback (this, mQueue, mBuffers[0]);
//enQueueBuffer(this,mQueue,mBuffers[i]);
}
// AudioSessionSetActive(true);
OSStatus errorCode = AudioQueueStart(mQueue,NULL);
mIsDone = false;
mIsStarted = true;
}
我觉得缓冲区是正确的,但我听不到声音,任何人都可以引导我,我做错了什么。
在此先感谢