时间:2010-07-25 00:04:49

标签: objective-c streaming ipad core-audio audio-recording

2 个答案:

答案 0 :(得分:1)

您需要使用较低级别的AudioQueue API,并使用AudioSession API设置音频会话。

然后你需要填写AudioStreamBasicDescription结构并用AudioQueueNewInput()创建一个新的输入队列,并包含你的回调函数来处理输入缓冲区。

然后您需要使用AudioQueueAllocateBuffer()AudioQueueEnqueueBuffer()创建3个缓冲区。只有这样你才能准备好致电AudioQueueStart()。您还应该处理音频会话中断,并处理停止音频队列。

这将为您提供包含未压缩的16位整数PCM音频数据的缓冲区流。你仍然需要压缩数据,这是另一种涉及使用AudioConverter API的蠕虫,我还没有在iPhone OS上做过,所以我不知道那里有什么用。

答案 1 :(得分:0)

请看这个框架。它在录制Streaming Kit

时提供录制数据

通过HTTP播放MP3

STKAudioPlayer* audioPlayer = [[STKAudioPlayer alloc] init];

[audioPlayer play:@"http://www.abstractpath.com/files/audiosamples/sample.mp3"];

并将其数据附加到NSMutabledata以使用此委托脱机播放。

在播放之前拦截PCM数据

 [audioPlayer appendFrameFilterWithName:@"MyCustomFilter" block:^(UInt32 channelsPerFrame, UInt32 bytesPerFrame, UInt32 frameCount, void* frames)
   {
   ...
   }];