Использование avaudioengine для iOS ломает avplayer - PullRequest
1 голос
/ 13 октября 2019

У меня возникла проблема при попытке использовать 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)

...