iOS上的录音

时间:2012-07-13 18:22:03

标签: iphone ios avfoundation core-audio audioqueueservices

我刚刚开始研究一个项目,要求我在iOS上做很多与音频相关的事情。

这是我第一次在音频领域工作,并且完全不知道如何去做。所以,我用Google搜索文档,主要依靠Apple文档。首先,我必须提到这些文件极其令人困惑,而且往往具有误导性。

无论如何,为了测试录音,我使用了AVAudioSession和AVAudioRecorder。根据我的理解,这些对于简单的录制和播放都是可以的。所以,这里有一些关于做更复杂事情的问题:

  • 如果我希望对音频进行任何实时处理,在录制过程中,我是否需要使用音频队列服务?
  • 除音频队列服务外还有哪些其他选项?
  • 什么是音频单元?

我实际上获得了Apple的音频队列服务编程指南,并开始编写用于录制的音频队列。其音频队列服务指南中的“图表”(PDF第19页)显示使用AAC编解码器完成录制。然而,在经历了一些挫折并浪费了大量时间后,我发现iOS上没有AAC录音 - “Core Audio Essentials”,“Core Audio Plug-ins:Audio Units and Codecs”部分。

这让我想到另外两个问题:

  • 对于Apple Lossless,iLBC,IMA / ADPCM,Linear PCM,uLaw / aLaw,适合录制的格式是什么?是否有某些人可能会参考的图表?
  • 另外,如果使用音频队列无法录制MPEG4AAC(.m4a),我怎么能用AVAudioRecorder录制MPEG4AAC(.m4a)?!

非常感谢提前帮助我解决这个问题。我会非常欣赏任何链接,方向和/或智慧的话语。

再次感谢和欢呼!

1 个答案:

答案 0 :(得分:0)

对于您的第一个问题,音频队列服务或使用RemoteIO音频单元是用于实时音频处理的适当API,RemoteIO允许更低和更确定的延迟,但实时要求比音频队列更严格。

对于创建aac录音,一种可能性是录制到原始线性PCM音频,然后使用AV文件服务将缓冲的原始音频转换为所需的压缩格式。