Я использую AVAudioInputNode
для записи звука с микрофона. Всякий раз, когда Tap устанавливается на узел ввода, я получаю следующее cra sh:
*** Terminating app due to uncaught exception 'com.apple.coreaudio.avfaudio', reason: 'required condition is false: format.sampleRate == hwFormat.sampleRate'
Вот мой код для установки крана на микрофон:
private func startRecording() {
fileName = "Session_" + Date().toStringDescription()
audioPath = getAudioFilePath(fileName: fileName + fileExtension)
do {
audioFile = try AVAudioFile(forWriting: audioPath, settings: audio_Setting)
print(audio_Setting)
} catch let error {
print("error: ", error.localizedDescription)
showError(error: error)
}
if(!micTapped) {
microphone_Node.installTap(onBus: .zero, bufferSize: bufferSize, format: inputFormat) { [weak self] (buffer, when) in
print("Tap installed")
do {
try self?.audioFile?.write(from: buffer)
} catch let error {
print(error.localizedDescription)
}
if self?.micTapped == false {
self?.micTapped = true
}
}
}
startEngine()
}
А вот мой установка словаря для создания аудиофайла для записи из буфера:
lazy var audio_Setting: AudioSettings = {
return [AVFormatIDKey: NSNumber(value: kAudioFormatMPEG4AAC_HE),
AVSampleRateKey: NSNumber(value: inputFormat.sampleRate), // 16000, 32000, 44100, or 48000, av_Session.sampleRate
AVNumberOfChannelsKey: NSNumber(value: 1),
AVEncoderAudioQualityKey:
NSNumber(value: AVAudioQuality.high.rawValue)]
}()
Вот значение inputFormat
:
private lazy var inputFormat: AVAudioFormat = {
return microphone_Node.inputFormat(forBus: .zero)
}()
Я также пытаюсь решить эту проблему, изменив inputFormat(forBus: .zero)
на outputFormat(forBus: .zero)
, следуя этому ответу , но не получил разрешения. Пожалуйста, помогите мне выйти из этой проблемы.
Примечание : Если я открываю экран рекордера только в моем приложении, он никогда не падает, но всякий раз, когда я открываю Tuner Fork сначала включите ViewController и вернитесь к Recorder View Controller, он всегда вылетает с этой проблемой.
Предварительный просмотр приложения Image