能否录制从iPhone输出的音频?

9
我正在开发一款应用程序,允许用户创建某种类型的配音。有一个音频文件正在播放,用户可以在某些时刻轻敲屏幕来插入声音(类似于审查按钮)。我想知道如何捕获最终产品。
直接从iPhone中捕获音频似乎是最简单的方法,因为用户已经听到了制作完成的成品。但是,我找不到如何实现这一点的任何信息。如果不可能,请问有什么建议?

嗨,我相信你可以从这里开始 http://zathras.de/programming/cocoa/UKSoundFileRecorder.zip/UKSoundFileRecorder/UKSoundFileRecorder/尽管它是为MacOS设计的,但我相信它也适用于iPhone。 - Coldsteel48
一个问题:正在播放的音频...来自于您要用来进行审查的同一应用程序吗? - Hugo Alonso
@HugoAlonso 是的,没错。 - swiftyboi
那么,是可能的。 - Hugo Alonso
2个回答

1
最好的方法可能是使用 AV Foundation框架进行混音,同时缓冲音频并播放它。这将允许高抽象级别,同时保证回放和保存的音频相等。
除此之外:从“如何以最少的代码实现此目标”的角度来看,如果没有更多关于您的设置的信息,那么这个问题就太过广泛和/或基于观点。

我认为这不算太宽泛。我的意思是想找出是否有一种简单的方法来捕获iPhone的音频,就像捕获图像截图的简单方式一样。 - swiftyboi

1

你需要使用缓冲区。现在不知道Swift如何实现,但可以在Obj-C中实现,然后进行桥接。

您可以参考StackOverflow上的这些答案(它们有点旧)

https://dev59.com/dWkx5IYBdhLWcg3wA_xS#11218339

https://dev59.com/ZF3Ua4cB1Zd3GeqP9yiz#10101877

还有一个项目(但是是Obj-C)https://github.com/alexbw/novocaine

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

另一种选择是离线处理:

  1. 播放您的音乐(或音频),并保持与"待审查音频"的经过时间同步的计时器运行。
  2. 保存开始和结束点击审查按钮(例如)的时间戳。
  3. 在那些记录(开始-结束)时间戳中将缓冲区A与您的效果重叠。

  4. 将缓冲区保存为文件(或进行所需操作

更新:

你应该看一下苹果关于类似此的实现: https://developer.apple.com/library/ios/samplecode/AVAEMixerSample/Introduction/Intro.html

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接