我一直在四處搜索Swift文檔到保存AVAudioEngine的音頻輸出,但我找不到任何有用的提示。
有什麼建議嗎?SWIFT - 是否可以保存來自AVAudioEngine或AudioPlayerNode的音頻?如果是,如何?
解決方案 我發現一個解決方法,謝謝馬特的答案。 這裏的如何使其通過AVAudioEngine 後保存音頻樣本代碼(我認爲這在技術上是之前)
newAudio = AVAudioFile(forWriting: newAudio.url, settings: nil, error: NSErrorPointer())
//Your new file on which you want to save some changed audio, and prepared to be bufferd in some new data...
var audioPlayerNode = AVAudioPlayerNode() //or your Time pitch unit if pitch changed
//Now install a Tap on the output bus to "record" the transformed file on a our newAudio file.
audioPlayerNode.installTapOnBus(0, bufferSize: (AVAudioFrameCount(audioPlayer.duration)), format: opffb){
(buffer: AVAudioPCMBuffer!, time: AVAudioTime!) in
if (self.newAudio.length) < (self.audioFile.length){//Let us know when to stop saving the file, otherwise saving infinitely
self.newAudio.writeFromBuffer(buffer, error: NSErrorPointer())//let's write the buffer result into our file
}else{
audioPlayerNode.removeTapOnBus(0)//if we dont remove it, will keep on tapping infinitely
println("Did you like it? Please, vote up for my question")
}
}
希望這有助於!
一個問題要解決:
有時候,你outputNode比輸入短:如果通過2加速時間率,你的聲音會更短的2倍。這是問題的IM面臨着因爲現在我保存文件的條件是(10號線)
if(newAudio.length) < (self.audioFile.length)//audiofile being the original(long) audio and newAudio being the new changed (shorter) audio.
任何幫助嗎?
這裏:[蘋果文件從AV導出](https://developer.apple.com/library/prerelease/ios/documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/05_Export.html#//apple_ref/doc/uid/TP40010188-CH9-SW2) – Moritz
謝謝@eric D.,我正在通過代碼。看起來它會完成這項工作。儘管如此,我發現了很多東西,還有很多我必須瞭解的內容。如果我提出問題可以嗎? 例如,我如何加載不是帶有URL的AudioFile但是有audioEngine或AudioNode的資產? 你有沒有經歷過這段代碼? – mlk
Personnally,不是真的,我只是以爲你可能錯過了這個文檔,所以我粘貼了鏈接。但這不是問題所在:問題在於你不能在SO上提出太寬泛的問題。無論如何,評論並不是這個地方。我建議你創建一個新問題,包括你當前的代碼,顯示你想要達到的目標以及你在哪裏掙扎,或者類似的東西。哦,每個帖子*一個*主題。順便說一句,歡迎來到SO。 :) – Moritz