swift - 将输入节点连接到 AVAudioSinkNode 时出错
问题描述
连接节点时出现错误
let sourceNode = AVAudioSinkNode { (test1, frameCount, audioBufferList) -> OSStatus in
print("callback", self.testInteger)
return noErr
}
audioEngine.attach(sourceNode)
audioEngine.connect(audioEngine.inputNode, to: sourceNode, format: nil)
[aurioc] AURemoteIO.cpp: 1086: Initialize: failed: -10851 (启用 1, outf <2 ch, 0 Hz, Float32, non-inter> inf <2 ch, 0 Hz, Float32, non-inter>)
在那之后的错误try audioEngine.start ()
[avae] AVAEInternal.h: 88 所需条件为假:[AVAudioEngineGraph.mm:1415:Initialize: (IsFormatSampleRateAndChannelCountValid (inputHWFormat))] [avae] AVAudioEngine.mm:160 Engine @ 0x2836a8940: 无法初始化,错误 = -10875 [ avae] AVAEInternal.h: 88 所需条件为假:[AVAudioEngineGraph.mm:1415:Initialize: (IsFormatSampleRateAndChannelCountValid (inputHWFormat))]
我也试过
audioEngine.connect (audioEngine.inputNode, to: sourceNode, format: audioEngine.inputNode.inputFormat (forBus: 0))
和
audioEngine.connect (audioEngine.inputNode, to: sourceNode, format: audioEngine.inputNode.outputFormat (forBus: 0))
在这两种情况下,应用程序崩溃并出现错误“由于未捕获的异常'com.apple.coreaudio.avfaudio'而终止应用程序,原因:'所需条件为假:IsFormatSampleRateAndChannelCountValid(格式)”
解决方案
我发现有必要将音频会话的类别 playAndRecord
try audioSession.setCategory (.playAndRecord, mode: .spokenAudio, options: .defaultToSpeaker)
在这种情况下,此选项有效
audioEngine.connect (audioEngine.inputNode, to: sourceNode, format: audioEngine.inputNode.inputFormat (forBus: 0))
推荐阅读
- c# - Hololens v2 与 Android 智能手机之间的通信
- c++ - CMake:使用 MSVC 2017 到 CLion 的 Qt 项目
- regex - 字符串末尾的正则表达式否定匹配
- python - “zsh:未知文件属性:0”在命令行上传递 Python 元组
- python - 如何从pdf(概率密度函数)中分离两个分布?
- python - 按月划分 csv 文件结果
- amazon-web-services - 使用 DynamoDb 和 DocClient,是否可以使用依赖两个属性和一个部门的 updateExpression?
- python - 特定场景下的字符串切片 Python
- c - 双指针和单指针的地址递增
- python - Python Json Parse“必须是整数”