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;
}
我覺得緩衝區是正確的,但我聽不到聲音,任何人都可以引導我,我做錯了什麼。
在此先感謝