我想用AVAudioEngine
和用戶麥克風錄製一些音頻。我已經有一個工作示例,但只是無法弄清楚如何指定我想要的輸出格式...如何指定AVAudioEngine麥克風輸入的格式?
我的要求是,我需要AVAudioPCMBuffer
,因爲我現在正在說它..
我需要添加一個獨立的節點來做一些轉碼嗎?我找不到很多有關這個問題的文檔/樣本...
而且我也是一個菜鳥,當談到音頻材料。我知道,我想NSData
含PCM-16位16000一個最大采樣率(8000會更好)
這是我的工作樣本:
private var audioEngine = AVAudioEngine()
func startRecording() {
let format = audioEngine.inputNode!.inputFormatForBus(bus)
audioEngine.inputNode!.installTapOnBus(bus, bufferSize: 1024, format: format) { (buffer: AVAudioPCMBuffer, time:AVAudioTime) -> Void in
let audioFormat = PCMBuffer.format
print("\(audioFormat)")
}
audioEngine.prepare()
do {
try audioEngine.start()
} catch { /* Imagine some super awesome error handling here */ }
}
如果我改變讓格式」說
let format = AVAudioFormat(commonFormat: AVAudioCommonFormat.PCMFormatInt16, sampleRate: 8000.0, channels: 1, interleaved: false)
那麼如果會產生一個錯誤說,採樣率必須是一樣的hwInput ...
任何幫助非常感謝!
編輯:我剛剛發現AVAudioConverter
但我需要與iOS8上以及兼容...
8000也適用。 – nullforlife
看起來好像要使8000赫茲工作,你必須在AVAudioSession.sharedInstance()上調用session.setPreferredSampleRate(8000) 。它實際上會將採樣率更改爲16000,但Mixer可以將採樣率降低到8kHz。 – philips77