【问题标题】:Is it possible to record the audio that comes out of the iPhone?是否可以录制来自 iPhone 的音频?
【发布时间】:2016-04-13 17:05:49
【问题描述】:

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

直接从 iPhone 采集音频似乎是最简单的方法,因为用户在制作成品时已经听到了声音。但是,我找不到有关如何执行此操作的任何信息。如果不能,有什么建议吗?

【问题讨论】:

  • 嗨,我相信你可以从这里开始zathras.de/programming/cocoa/UKSoundFileRecorder.zip/… 尽管它适用于 MacOS,但我相信它也适用于 iPhone
  • 一个问题:正在播放的音频..来自您将用于审查它的同一个应用程序?
  • @HugoAlonso 是的,没错。
  • 那么,是的,是可能的。

标签: swift avaudioplayer avaudiosession avaudioengine


【解决方案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. 在记录的 (start-end) 时间戳中将缓冲区 A 与您的效果重叠。

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

更新:

您应该查看 Apple 的实现,如下所示: https://developer.apple.com/library/ios/samplecode/AVAEMixerSample/Introduction/Intro.html

【讨论】:

    【解决方案2】:

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

    除此之外:从 我如何以最少的代码实现这一点 的角度来看,如果没有关于您的设置的更多信息,这个问题太宽泛和/或基于意见。

    【讨论】:

    • 我不认为它太宽泛了。我的意思是找出是否有一种简单的方法可以从 iPhone 中捕获音频,类似于截取图像的简单方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-06
    • 2013-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多