Почему я получаю EXC_BREAKPOINT, пишущий AVAudioFile после использования AVAudioConverter на iOS?
Я пытаюсь записать голос с микрофона с помощью AVAudioEngine, выполнить некоторые изменения формата с помощью AVAudioConverter и сохранить буфер результатов в AVAudiofile следующим образом
func startRecording() {
let format = audioEngine.inputNode.inputFormat(forBus: 0)
let targetFormat = AVAudioFormat(commonFormat: AVAudioCommonFormat.pcmFormatInt16, sampleRate: 8000, channels: 1, interleaved: false)
let settings = targetFormat!.settings
do{
let audioFile = try AVAudioFile(forWriting: audioFilename, settings:settings)
audioEngine.inputNode.installTap(onBus: 0, bufferSize: 1024, format: format, block: { (buffer: AVAudioPCMBuffer, time:AVAudioTime) -> Void in
print("\(buffer.frameLength)")
do {
let converter = AVAudioConverter.init(from: format, to: targetFormat!)
let newbuffer = AVAudioPCMBuffer(pcmFormat: targetFormat!,
frameCapacity: buffer.frameCapacity)
let inputBlock : AVAudioConverterInputBlock = { (inNumPackets, outStatus) -> AVAudioBuffer? in
outStatus.pointee = AVAudioConverterInputStatus.haveData
let audioBuffer : AVAudioBuffer = buffer
return audioBuffer
}
var error : NSError?
converter?.convert(to: newbuffer!, error: &error, withInputFrom: inputBlock)
try audioFile.write(from: newbuffer!)
} catch let error as NSError {
NSLog("Error writing %@", error.localizedDescription)
}
})
self.audioEngine.prepare()
startAudioEngine()
}catch{
}
}
Когда я выполняю код, я получаю поток 9: EXC_BREAKPOINT (код =1, субкод =0x187442dcc) в строке
try audioFile.write(from: newbuffer!)
Есть предположения, почему это происходит? Я довольно новичок в разработке для iOS, и меня это не устраивает.
заранее спасибо