在iphone上播放pcm数据

时间:2011-05-04 13:34:13

标签: iphone audio pcm audiounit audioqueue

我需要在iphone上播放线性pcm数据。

我通过RTSP获得实时数据流,我现在可以从iphone中读取它,将其保存到文件中,在支持pcm的桌面音频播放器上播放,因此我认为传输是好的。

现在我卡住了,我完全了!不知道如何处理包含数据的NSData对象。

我做了一些研究,结果是AudioUnits,但我不能将我的NSdata分配给audiobuffer,分别我不知道如何。

对于我的实例,我分配了回调:

AURenderCallbackStruct input;
input.inputProc = makeSound;
input.inputProcRefCon = self;

并具有'makeSound'功能:

   OSStatus makeSound(
                void *inRefCon, 
                AudioUnitRenderActionFlags  *ioActionFlags, 
                const AudioTimeStamp        *inTimeStamp, 
                UInt32                      inBusNumber, 
                UInt32                      inNumberFrames, 
                AudioBufferList             *ioData)

      {

            //so what to do here?
            //ioData->mBuffers[0].mdata = [mySound bytes]; does not work, nor does
            //ioData->mBuffers = [mySound byes];

            return noErr;
       }

我认为这是不正确的?

我需要知道/学习/实施什么?我是一个完整的音频新手,所以我的建议是,我不需要几个缓冲区,因为当我从rtsp获得新的声音包时,旧的声音包已经结束,因为它是一个实时流(我的记录基于此,只是附加了没有查找演示文稿时间戳的字节,因为我反正没有收到一些)

干杯

1 个答案:

答案 0 :(得分:1)

我不知道这是否正是您所寻找的,但Matt Gallagher的一些AudioStreamer代码可能对您有所帮助。特别是,看看他如何处理音频缓冲。 http://cocoawithlove.com/2010/03/streaming-mp3aac-audio-again.html