【发布时间】:2020-02-10 13:00:52
【问题描述】:
我在我的应用中尝试同时使用 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)
【问题讨论】:
-
你就是那个说
setCategory(AVAudioSession.Category.record)的人。这意味着没有播放。
标签: ios swift avplayer avaudioengine