我试图创建一个基本的iOS应用程序,让我录制音频,然后以不同的速度和音调播放它。在iOS中使用AVAudioEngine的默认音频输出
我正在使用AVAudioPlayer
播放录制的音频,速度较慢或较快,并且按预期工作。声音在我的耳机中播放。
我使用AVAudioEngine
以不同的音调播放录制的音频,它的工作原理除了音频是在我的Thunderbolt显示器扬声器而不是我的耳机上播放的。
我一直在阅读文档,以了解这种行为,但总结出来。在该方法中,viewDidLoad
我的视图控制器,我设置音频对话如下:
let session = AVAudioSession.sharedInstance()
session.setCategory(AVAudioSessionCategoryPlayback, error: &error)
session.setActive(true, error: &error)
进一步回落,我定义了一个触发利用音频引擎如下声音功能:
let playerNode = AVAudioPlayerNode()
audioEngine.attachNode(playerNode)
let changePitchNode = AVAudioUnitTimePitch()
changePitchNode.pitch = 1000
audioEngine.attachNode(changePitchNode)
audioEngine.connect(playerNode, to: changePitchNode, format: audioFile.processingFormat)
audioEngine.connect(changePitchNode, to: audioEngine.outputNode, format: audioFile.processingFormat)
playerNode.scheduleFile(audioFile, atTime: nil, completionHandler: nil)
audioEngine.startAndReturnError(nil)
playerNode.play()
audioEngine
和audioFile
是在该类中全局声明的。整个项目可以在https://github.com/KevinSjoberg/pitch-perfect找到。
任何人都可以阐明为什么它坚持在我的显示器扬声器而不是我的耳机上播放声音吗?