Ios 使用AudioQueue播放原始未压缩声音,无声音
我使用三个缓冲区和一个队列,通过网络播放ADPCM数据。数据从我的应用程序中解码,解码后的数据未压缩的pcm数据通过Audacity播放正确验证。但是,当使用AudioQueue从我的应用程序播放时,我听不到任何声音。所有AudioQueue API返回值均为noErr 0。我一直在尝试分配三个缓冲区。这对我没用!有人知道如何显示更多的AudioQueue日志,这样我就可以抓住故障点,或者我的代码中是否存在任何问题?谢谢Ios 使用AudioQueue播放原始未压缩声音,无声音,ios,audioqueue,adpcm,Ios,Audioqueue,Adpcm,我使用三个缓冲区和一个队列,通过网络播放ADPCM数据。数据从我的应用程序中解码,解码后的数据未压缩的pcm数据通过Audacity播放正确验证。但是,当使用AudioQueue从我的应用程序播放时,我听不到任何声音。所有AudioQueue API返回值均为noErr 0。我一直在尝试分配三个缓冲区。这对我没用!有人知道如何显示更多的AudioQueue日志,这样我就可以抓住故障点,或者我的代码中是否存在任何问题?谢谢 ... aq->mDataFormat.mSample
...
aq->mDataFormat.mSampleRate = format->nSamplesPerSec; // 44100
aq->mDataFormat.mChannelsPerFrame = format->nChannels; // 1
aq->mDataFormat.mFormatFlags = kAudioFormatFlagIsSignedInteger |
kAudioFormatFlagIsPacked;
aq->mDataFormat.mFramesPerPacket = 1;
aq->mDataFormat.mBitsPerChannel = 16;
aq->mDataFormat.mFormatID = kAudioFormatLinearPCM;
...
// Fill data before starting
for (i = 0; i bufferByteSize >= size) {
aq->mBuffers[i]->mAudioDataByteSize =
size - (kNumberBuffers - 1 - i) * chunkSize;
memcpy(aq->mBuffers[i]->mAudioData,
src + aq->mBuffers[i]->mAudioDataByteSize,
aq->mBuffers[i]->mAudioDataByteSize);
status = AudioQueueEnqueueBuffer(aq->mQueue, aq->mBuffers[i], 0, NULL);
printf("%s: %d/%d bytes to enqueue - %d\n", __func__,
aq->mBuffers[i]->mAudioDataByteSize, size, status);
size -= aq->mBuffers[i]->mAudioDataByteSize;
src += aq->mBuffers[i]->mAudioDataByteSize;
} else {
aq->mBuffers[i]->mAudioDataByteSize = aq->bufferByteSize;
memcpy(aq->mBuffers[i]->mAudioData, src, aq->bufferByteSize);
status = AudioQueueEnqueueBuffer(aq->mQueue, aq->mBuffers[i], 0, NULL);
printf("%s: enqueue a full buffer[%d]\n - %d\n", __func__, i, status);
size -= aq->bufferByteSize;
src += aq->bufferByteSize;
}
}
}
...
status = AudioQueueSetParameter(aq->mQueue, kAudioQueueParam_Volume, 1.0);
printf("%s: set AudioQueue volume %d\n", __func__, status);
status = AudioQueueStart(aq->mQueue, NULL);
printf("%s: start AudioQueue [%d] %d\n", __func__, aq->bufferByteSize, status);
结果我没有设置mBytesPerPacket和mBytesPerFrame。结果我没有设置mBytesPerPacket和mBytesPerFrame。