我正在尝试从AudioQueueBufferRef-> mAudioData读取音频数据。
我想要做的是将我从麦克风/文件中读取的缓冲区打印到控制台。
我不知道音频数据的表示格式。 我试图将它打印为long / int / float,但似乎没有给我正确的数据。
我的代码与apple提供的SpeakHere示例非常相似。
我正在尝试打印缓冲区,如下所示: printf(“%d”,((int *)inCompleteAQBuffer-> mAudioData)[i]);
我做错了什么? 从mAudioData读取数据的正确方法是什么?我的流描述详情是:
streamDescription.mFormatID = kAudioFormatLinearPCM;
// if we want pcm, default to signed 16-bit little-endian
streamDescription.mFormatFlags = kLinearPCMFormatFlagIsSignedInteger | kLinearPCMFormatFlagIsPacked;
streamDescription.mBitsPerChannel = 8 * sizeof (int);
streamDescription.mBytesPerPacket = streamDescription.mBytesPerFrame = (streamDescription.mBitsPerChannel / 8) * streamDescription.mChannelsPerFrame;
streamDescription.mFramesPerPacket = 1;
答案 0 :(得分:0)
Apple的SpeakHere示例应用程序:
mRecordFormat.mBitsPerChannel = 16;
你有不同的东西。 C short类型通常与32位RISC体系结构上的C int类型不同,例如当前的iOS设备。