0

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

这是我第一次在音频领域工作,完全不知道如何去做。因此,我在 Google 上搜索了文档,并且主要依赖于 Apple 文档。首先,我必须提到,这些文件非常令人困惑,而且常常具有误导性。

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

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

我实际上得到了 Apple 的音频队列服务编程指南,并开始编写音频队列进行录制。他们的音频队列服务指南(PDF 第 19 页)上的“图表”显示正在使用 AAC 编解码器进行录制。但是,经过一番挫折和浪费大量时间后,我发现 AAC 录制在 iOS 上不可用 - “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)?!

非常感谢您提前帮助我解决这个问题。我会非常感谢任何链接、方向和/或智慧之言。

再次感谢和欢呼!

4

1 回答 1

0

对于您的第一个问题,Audio Queue 服务或使用 RemoteIO Audio Unit 是用于实时音频处理的适当 API,RemoteIO 允许更低且更具确定性的延迟,但比 Audio Queues 具有更严格的实时要求。

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

于 2012-07-13T21:10:43.570 回答