我面临着一个简单的问题,在谷歌上找到答案并不容易(至少对我来说是这样)。与AudioKit 4.4合作,我正在尝试制作一个麦克风,我可以在我的立体声耳机的两个声道中听到输出。我尝试手动将audioformat设置为AudioKit.format和AKSettings.channelCount,但在耳机中我只能在左声道听到麦克风。我错过了什么?
这里使用我当前的设置简化了代码:
AKSettings.bufferLength = .long
AKSettings.fixTruncatedRecordings = true
AKSettings.defaultToSpeaker = true
AKSettings.ioBufferDuration = 0.002
AKSettings.channelCount = 2
AKSettings.enableRouteChangeHandling = false
let format = AVAudioFormat(standardFormatWithSampleRate: 44100, channels: 2)
AudioKit.format = format ?? AudioKit.format
let mic = AKMicrophone()
AudioKit.output = mic
try? AudioKit.start()正如您所看到的,我只是初始化音频会话的AKSettings属性,并创建一个连接到AudioKit引擎输出的麦克风。我怀疑AKSettings.channelCount = 2之前的AKSettings在这个问题上没有起到任何作用。但是我一点也不明白,我做错了什么?我敢肯定,这将是一个简单的解决方案。
发布于 2019-04-25 21:13:43
因此,我找到了答案--它是AKStereoFieldLimiter类
let mic = AKMicrophone()
let monoToStereo = AKStereoFieldLimiter(mic, amount: 1)
let micMixer = AKMixer(monoToStereo)
AudioKit.output = micMixer此外,在AudioKit 4.7.1中可能有一个更简单的解决方案- initialisation AKMicrophone(with format: AVAudioFormat?),但我不能检查它,因为我正在使用AudioKit 4.4。如果有人可以尝试这种方法,请在此答案的评论中留下反馈。
https://stackoverflow.com/questions/55830816
复制相似问题