首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在不停止AudioKit的情况下停止AKMicrophone

在不停止AudioKit的情况下停止AKMicrophone
EN

Stack Overflow用户
提问于 2017-12-14 06:54:51
回答 2查看 664关注 0票数 5

我有一个应用程序,其中我只想要从一个特定的屏幕录制。在其他的屏幕上,我不希望大部分时间都在录制,这样在应用程序处于后台时,音频仍然可以播放,而不会出现红色的录制条。我唯一能做到这一点的方法是停止AudioKit (AudioKit.stop()),但我非常确定AudioKit的启动和停止会导致一些非常随机的、难以跟踪的崩溃。我还试过在麦克风上呼叫stop,并将input enabled设置为false,但也不起作用。

我知道也有类似的问题AudioKit: Can I disable an AKMicrophone without calling AudioKit.stop()?

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

有没有办法在不停止引擎的情况下停止接收来自麦克风的输入?

EN

回答 2

Stack Overflow用户

发布于 2018-01-04 03:53:34

这取决于您断开麦克风连接的目标。如果您只想停止处理输入并更改AVAudioSession类别,这样红色条就会消失,您可以设置AKSettings.audioInputEnabled = false,但随后您需要更新AVAudioSession的类别。目前,据我所知,没有一个好的方法可以在不停止/启动AudioKit的情况下做到这一点,尽管在不重新启动引擎的情况下更改类别应该是可能的。一个似乎在第一次刷新时起作用的技巧是分配AudioKit.output = AudioKit.output来触发didSet副作用,该副作用将通过updateSessionCategoryAndOptions()更新类别。

你也可以绕过AudioKit,直接设置共享的AVAudioSession的类别。我正在考虑为AudioKit创建一个PR来公开updateSessionCategoryAndOptions(),但在此期间,您可以始终在您自己的分支中公开此函数并运行build_frameworks.sh。无论如何,这不是很好的解决方案,但这是一个有效的用例- AudioKit应该在未来更好地支持!

票数 3
EN

Stack Overflow用户

发布于 2018-01-10 07:26:11

作为使用音频套件的一般规则,您应该采用适当的增益分段模式。我不知道你是否有任何DAW (protools,逻辑,cubase等)的经验,但你应该将AudioKit视为DAW……在代码中。

代码语言:javascript
复制
AudioKit.start()

是您的主输出,老实说,我看不出有什么理由在您的应用程序中停止它。相反,你应该将audiokit的主输出设为静音,以“杀死声音”。

至于你的问题,AKMicrophone确实有start和stop属性,你应该只需要调用stop就可以了!

代码语言:javascript
复制
let mic = AKMicrophone

mic.start(AKMicrophone)

mic.stop(AKMicrophone)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47803341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档