Ho cercato la documentazione di Swift su salvando un'uscita audio da AVAudioEngine ma non sono riuscito a trovare alcun suggerimento utile.
Qualche suggerimento?SWIFT - È possibile salvare l'audio da AVAudioEngine o da AudioPlayerNode? Se sì, come?
Soluzione Ho trovato un modo per aggirare grazie alla risposta di Matt. Ecco un codice di esempio di come salvare un audio dopo averlo fatto passare attraverso un AVAudioEngine (credo che tecnicamente è prima)
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")
}
}
Spero che questo aiuti!
Un problema da risolvere:
A volte, il vostro outputNode è più corto di ingresso: se si accelera il tasso di tempo da 2, l'audio sarà di 2 volte più brevi. Questa è la questione im rivolto per ora, poiché la mia condizione per il salvataggio del file è (linea 10)
if(newAudio.length) < (self.audioFile.length)//audiofile being the original(long) audio and newAudio being the new changed (shorter) audio.
Qualsiasi aiuto qui?
Qui: [Apple doc per esportare da AV] (https://developer.apple.com/library/prerelease/ios/documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/05_Export.html#//apple_ref/doc/uid/TP40010188-CH9-SW2) – Moritz
Grazie a @eric D., sto passando attraverso il codice. Sembra che farà il lavoro. Tuttavia, ci sono molte cose che sto scoprendo e molte linee che devo capire. Va bene se sollevo delle domande? Ad esempio, come posso caricare un asset che non è un AudioFile con URL ma un audioEngine o AudioNode? Hai mai letto questo codice? – mlk
Personnamente, non proprio, ho pensato che potresti aver perso questo documento, quindi ho incollato il link. Ma non è questo il problema: la cosa è che non puoi fare domande troppo ampie su SO. E i commenti non sono il posto giusto per questo. Ti suggerisco di creare una nuova domanda includendo il tuo codice attuale, mostrando ciò che cerchi di ottenere e dove lotti, o qualcosa del genere. Oh, e * un * argomento per post. Benvenuto in SO, a proposito. :) – Moritz