首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AudioSession maximumInputNumberOfChannels返回0

AudioSession maximumInputNumberOfChannels返回0
EN

Stack Overflow用户
提问于 2018-10-11 20:27:32
回答 2查看 319关注 0票数 0

我制作了一个iOS插件,它捕获音频数据并以字节流的形式将其转发给侦听器。它在模拟器和各种设备上运行得完美无缺,但是在运行iPhone 6的iOS 11.3上,它在初始化过程中崩溃了。我跟踪了这个问题,直到下面的代码:

代码语言:javascript
复制
let session = AVAudioSession.sharedInstance()
do {
    try session.setCategory(AVAudioSessionCategoryPlayAndRecord)
    try session.setPreferredInputNumberOfChannels(1) // This is the line that is throwing
    try session.setPreferredIOBufferDuration(65)
} catch {
    print(error.localizedDescription) // Prints: The operation couldn’t be completed. (OSStatus error -50.)
    return -1
}

如注释所示,错误是由对session.setPreferredIOBufferDuration的调用引起的。查看文档,它说,如果输入号大于session.maximumInputNumberOfChannels,则调用将抛出,从错误消息判断,情况似乎是这样。检查此电话上的值,它将返回0。

是什么导致这个值为0?据我所知,我认为这是一个权限问题,因为我请求麦克风许可之前,应用程序达到这一点的代码。我唯一能想到的就是这款手机根本没有麦克风的功能.但这是一部手机,因此麦克风的配备似乎相当标准。

编辑:我拿出了一个运行iPad 12的iOS Air,它也有同样的问题。

EN

回答 2

Stack Overflow用户

发布于 2018-10-12 16:06:12

我发现了问题。在尝试设置频道数量之前,我需要添加session.setActive(true)。我以前从来没有这样做过,但我想这是你无论如何都应该做的事情,以防万一。

票数 0
EN

Stack Overflow用户

发布于 2018-10-12 03:30:25

AVAudioSession.sharedInstance()您可以更改它,搜索它吗?

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

https://stackoverflow.com/questions/52768437

复制
相关文章

相似问题

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