停止无音okit的无akmicrophone



我有一个应用,我只想从一个特定的屏幕录制。在其他每个屏幕上,我都希望大部分录制,以便在应用程序在后台的情况下仍然可以播放,而没有红色录音栏。我唯一能够做到这一点的方法是停止Audiokit(Audiokit.stop()),但我很确定,Audiokit的起始和停止会导致一些非常随机的时间来追踪崩溃。我还尝试在麦克风上调用Stop,并设置输入启用为False,但这也没有起作用。

我知道有一个类似的问题听觉:我可以在不致电Audiokit.stop()的情况下禁用Akmicrophone吗?

但是答案没有解决这个问题。

无论如何是否有停止从麦克风接收输入而不会停止发动机的输入?

它在断开麦克风连接的情况下取决于您的目标。如果您只想停止处理输入并更改Avaudiosession类别,以便红色栏消失,则可以设置AKSettings.audioInputEnabled = false,但是您需要更新Avaudiosession的类别。据我所知,目前没有一个好方法可以在不停止/启动电听器的情况下进行此操作,尽管在不重新启动引擎的情况下更改类别应该是可能的。似乎在第一个腮红上使用的一个黑客是分配AudioKit.output = AudioKit.output来触发didSet副作用,该副作用将通过updateSessionCategoryAndOptions()更新类别。

您可以始终绕过电听器,并尝试直接设置共享的Avaudiosession类别。我正在考虑为Audiokit创建PR来公开updateSessionCategoryAndOptions(),但与此同时,您始终可以在自己的分支中公开此功能并运行build_frameworks.sh。无论如何,不是很棒的解决方案,但这是一个有效的用例电听器,将来应该更好地支持!

作为使用音频套件的一般规则,您应该采用适当的增益登台模式。我不知道您是否有任何DAW(Protools,Logic,Cubase等)的经验

AudioKit.start()

是您的主输出,老实说,我没有理由在您的申请中停止它。相反,您应该静音电听的主输出以"杀死声音"

至于您的问题,AKMicrophone确实具有起点和停止属性,您应该可以打电话停止!

let mic = AKMicrophone
mic.start(AKMicrophone)
mic.stop(AKMicrophone)

最新更新