Swift 可以录制iPhone发出的音频吗?

Swift 可以录制iPhone发出的音频吗?,swift,avaudioplayer,avaudiosession,avaudioengine,Swift,Avaudioplayer,Avaudiosession,Avaudioengine,我正在开发一个允许用户创建某种配音的应用程序。有一个音频文件正在播放,用户可以在某些时刻点击插入声音(有点像审查按钮)。我想知道如何捕捉最终产品 从iPhone直接捕获音频似乎是最简单的方法,因为用户在制作成品时已经听到了声音。然而,我找不到任何关于如何做到这一点的信息。如果不可能,有什么建议吗?最好的方法可能是使用混音,然后缓冲音频并播放。这将允许高抽象级别,同时保证播放和保存的音频相等 除此之外:在没有更多关于设置的信息的情况下,如何以最少的代码角度实现这一点,这个问题过于宽泛和/或基于观点

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


从iPhone直接捕获音频似乎是最简单的方法,因为用户在制作成品时已经听到了声音。然而,我找不到任何关于如何做到这一点的信息。如果不可能,有什么建议吗?

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


除此之外:在没有更多关于设置的信息的情况下,如何以最少的代码角度实现这一点,这个问题过于宽泛和/或基于观点。

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

您可以在StackOverflow中参考此答案(它们有点旧)

项目也存在(但在Obj-C中)

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

另一种选择是离线操作:

  • 播放音乐(或音频),并使计时器与“待审查音频”的运行时间保持同步
  • 保存开始和结束点击审查按钮时的时间戳(例如)
  • 将缓冲区A与记录的(开始-结束)时间戳中的效果重叠

  • 将缓冲区另存为文件(或执行您需要的任何操作

  • 更新:

    您应该研究一下苹果公司对以下内容的实施:

    您好,我相信您可以从这里开始,尽管它适用于MacOS,但我相信它也适用于iPhone。一个问题:正在播放的音频……来自您将用于审查它的同一个应用程序?@HugoAlonso是的,没错。那么,是的,是可能的。我不认为它太广泛。我想知道是否有一种简单的方法可以从iPhone中捕获音频,就像有一种简单的方法可以截图一样。