我正在制作一款应用程序,需要在iPad上播放和录制来自互联网的流媒体音频。音频流已经完成,现在我很快就要开始录制部分,但是我不知道该如何继续。你能给我一些提示吗?想法?它将需要在同时录制AAC或MP3时进行播放。谢谢。
你需要使用较低级别的AudioQueue API,并使用AudioSession API设置音频会话。
然后,您需要填写一个AudioStreamBasicDescription
结构,并使用AudioQueueNewInput()
创建一个新的输入队列,并包括处理输入缓冲区的回调函数。
然后,您需要使用AudioQueueAllocateBuffer()
和AudioQueueEnqueueBuffer()
创建3个缓冲区。只有这样,您才能准备好调用AudioQueueStart()
。您还应该处理音频会话中断,并处理停止音频队列。
这只会让您获得包含未压缩的16位整数PCM音频数据的缓冲区流。您仍然需要压缩数据,这是另一个棘手的问题,涉及使用AudioConverter
API,在iPhone OS上我不知道哪些方法可行。
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)
{
...
}];