我正在开发一款允许用户创建一种配音的应用。有一个音频文件播放,用户可以在某些时刻点击插入声音(有点像检查按钮。)我想知道如何捕获最终产品。
直接从iPhone捕获音频似乎是最简单的方法,因为用户已经听完了产品的成品。但是,我无法找到有关如何执行此操作的任何内容。如果不可能,有什么建议吗?
答案 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中。
其他选项是离线执行:
重叠缓冲区A,您可以记录这些记录(起始)时间戳。
将缓冲区保存为文件(或做任何你需要做的事情)
更新:
你应该看一下像这样的Apple实现: https://developer.apple.com/library/ios/samplecode/AVAEMixerSample/Introduction/Intro.html