如何从AudioQueueBufferRef-> mAudioData读取数据

时间:2011-04-28 22:54:18

标签: iphone core-audio

我正在尝试从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;

1 个答案:

答案 0 :(得分:0)

Apple的SpeakHere示例应用程序:

mRecordFormat.mBitsPerChannel = 16;

你有不同的东西。 C short类型通常与32位RISC体系结构上的C int类型不同,例如当前的iOS设备。