Ich habe mich umgesehen Swift Dokumentation zu speichern Sie eine Audio-Ausgabe von AVAudioEngine, aber ich konnte keinen nützlichen Tipp finden.
Irgendwelche Vorschläge?SWIFT - Kann ich Audio von AVAudioEngine oder von AudioPlayerNode speichern? Wenn ja, wie?
Lösung Ich fand einen Weg um dank Matt Antwort. Hier ist ein Beispielcode, wie ein Audio zu speichern, nachdem es durch einen AVAudioEngine vorbei (ich glaube, dass technisch, bevor es)
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")
}
}
hoffe, das hilft!
Ein Problem zu lösen:
Manchmal ist Ihre outputNode kürzer als die Eingabe: Wenn Sie die Zeitrate von 2 beschleunigen, wird Ihre Audio-2-mal kürzer sein. Dies ist die Frage im jetzt mit Blick auf da mein Zustand die Datei für das Speichern ist (Zeile 10)
if(newAudio.length) < (self.audioFile.length)//audiofile being the original(long) audio and newAudio being the new changed (shorter) audio.
Jede Hilfe hier?
Hier: [Apple Dokument aus AV zu exportieren] (https://developer.apple.com/library/prerelease/ios/documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/05_Export.html#//apple_ref/doc/uid/TP40010188-CH9-SW2) – Moritz
Dank @eric D., ich gehe durch den Code. Sieht so aus, als würde es den Job machen. Nichtsdestotrotz gibt es viele Dinge, die ich entdecke und viele Zeilen, die ich verstehen muss. Ist es in Ordnung, wenn ich Fragen aufwerfe? Zum Beispiel, wie könnte ich ein Asset laden, das keine AudioFile mit URL ist, sondern eine audioEngine oder AudioNode? Haben Sie diesen Code schon einmal gelesen? – mlk
Persönlich, nicht wirklich, ich dachte nur, Sie haben dieses Dokument möglicherweise verpasst, also habe ich den Link eingefügt. Aber das ist nicht das Problem: Die Sache ist, dass man nicht zu weitgehende Fragen zu SO stellen kann. Und Kommentare sind sowieso nicht der richtige Ort dafür. Ich schlage vor, dass Sie eine neue Frage mit Ihrem aktuellen Code erstellen, die zeigt, was Sie erreichen möchten und wo Sie sich anstrengen oder so. Oh, und * ein * Thema pro Post. Willkommen in SO übrigens. :) – Moritz