我試圖創建一個基本的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找到。
任何人都可以闡明爲什麼它堅持在我的顯示器揚聲器而不是我的耳機上播放聲音嗎?