是否可以录制iPhone发出的音频?

时间:2016-01-08 21:57:41

标签: swift avaudioplayer avaudiosession avaudioengine

我正在开发一款允许用户创建一种配音的应用。有一个音频文件播放,用户可以在某些时刻点击插入声音(有点像检查按钮。)我想​​知道如何捕获最终产品。

直接从iPhone捕获音频似乎是最简单的方法,因为用户已经听完了产品的成品。但是,我无法找到有关如何执行此操作的任何内容。如果不可能,有什么建议吗?

2 个答案:

答案 0 :(得分:1)

最好的方法可能是使用AV Foundation framework进行混音,然后缓冲音频以及播放音频。这将允许高抽象级别,同时保证播放和保存的音频相等。

除此之外:从一个如何以最少的代码实现这一点 - 在没有关于您的设置的更多信息的情况下,问题太过广泛和/或基于意见。

答案 1 :(得分:1)

您必须使用缓冲区。现在不知道它是如何在Swift中完成的,但是你可以在Obj-C中实现它,然后将它连接起来。

你可以在StackOverflow中找到这个答案(它们有点旧

https://stackoverflow.com/a/11218339/2683201

https://stackoverflow.com/a/10101877/2683201

并且项目也存在(但是在Obj-C中) https://github.com/alexbw/novocaine

主要是你的情况的想法是有2个独立的缓冲区和你的声音效果。 然后,您将从缓冲区A(您的音乐)播放并将播放的数据复制到缓冲区B(最终输出),除非您正在播放效果。在这种情况下,您将效果数据复制到缓冲区B中。

其他选项是离线执行:

  1. 播放您的音乐(或音频)并保持计时器与“被删除的音频”的已用时间同步。
  2. 保存开始和结束点击审查按钮的时间戳(例如)。
  3. 重叠缓冲区A,您可以记录这些记录(起始)时间戳。

  4. 将缓冲区保存为文件(或做任何你需要做的事情

  5. 更新:

    你应该看一下像这样的Apple实现: https://developer.apple.com/library/ios/samplecode/AVAEMixerSample/Introduction/Intro.html