У меня возникла проблема при попытке использовать AVAudioPlayer и AVAudioEngine в моем приложении. Я использую AVAudioPlayer для воспроизведения удаленных аудиофайлов и потокового аудио. Я использую AVAudioEngine для захвата звука с микрофона и расшифровки его. Однако всякий раз, когда я использую AVAudioEngine и возвращаюсь к плееру, я не могу воспроизвести звук, так как avasset был пуст. Я должен настроить и играть снова. Каков наилучший способ использовать микрофон и не мешать воспроизведению звука
let audioEngine = AVAudioEngine()
var inputNode: AVAudioInputNode!
// view did load
let audioSession = AVAudioSession.sharedInstance()
try audioSession.setCategory(AVAudioSession.Category.record, mode: AVAudioSession.Mode.measurement)
try audioSession.setActive(true, options: .notifyOthersOnDeactivation)
inputNode = audioEngine.inputNode
let recordingFormat = inputNode.outputFormat(forBus: 0)
inputNode.removeTap(onBus: 0)
inputNode.installTap(onBus: 0, bufferSize: 1024, format: recordingFormat) { (buffer: AVAudioPCMBuffer, when: AVAudioTime) in
self.recognitionRequest?.append(buffer)
}
audioEngine.prepare()
try audioEngine.start()
//viewWillDisappear
self.audioEngine.stop()
self.inputNode.removeTap(onBus: 0)