答案 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)
{
...
}];