我正在开发一款应用程序,允许用户创建某种类型的配音。有一个音频文件正在播放,用户可以在某些时刻轻敲屏幕来插入声音(类似于审查按钮)。我想知道如何捕获最终产品。
直接从iPhone中捕获音频似乎是最简单的方法,因为用户已经听到了制作完成的成品。但是,我找不到如何实现这一点的任何信息。如果不可能,请问有什么建议?
直接从iPhone中捕获音频似乎是最简单的方法,因为用户已经听到了制作完成的成品。但是,我找不到如何实现这一点的任何信息。如果不可能,请问有什么建议?
你需要使用缓冲区。现在不知道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中。
另一种选择是离线处理:
在那些记录(开始-结束)时间戳中将缓冲区A与您的效果重叠。
将缓冲区保存为文件(或进行所需操作)
更新:
你应该看一下苹果关于类似此的实现: https://developer.apple.com/library/ios/samplecode/AVAEMixerSample/Introduction/Intro.html