2017-11-17 3 views
2

Ich versuche, die Fähigkeit zu erreichen, etwas aufzunehmen (Mikrofon oder Oszillator oder irgendeinen anderen Eingang), ich brauche es so genau wie es sein könnte in Bezug auf die Ausführung eines Callbacks direkt danach Aufnahme beendet, also dachte ich ClipRecorder könnte mir hier helfen. Dieses Stück Code geht in eine einfache Ansicht Controller viewDidLoad Funktion, und der Code ausgeführt und bis zum Ende, aber der Rückruf des Clip-Recorder nie ausgeführt.AudioKit - kann AKClipRecorder nicht funktionieren

Können Sie mir bitte beraten, was habe ich falsch gemacht? Ich bin sehr neu in AudioKit, also könnte es mein Missverständnis sein. hier ist der code:

AKSettings.bufferLength = .shortest 
AKSettings.defaultToSpeaker = true 
try! AKSettings.setSession(category: .playAndRecord) 

let oscillator = AKOscillator() 
let oscMixer = AKMixer(oscillator) 
AudioKit.output = oscMixer 
AudioKit.start() 

oscillator.start() 

let clipRecorder = AKClipRecorder(node: oscMixer) 

do{ 
    AKLog("1") 
    try clipRecorder.recordClip(time: 0, duration: 2, tap: nil, completion: { url, something, err in 
     AKLog("recorded clip") 
     oscillator.stop() 
    }) 
    AKLog("2") 
} catch let error as ClipRecordingError { 
    print("\(String(describing: error.errorDescription))") 
} catch { 
    print("something general") 
} 

logs 1,2 sind gedruckt, 'aufgenommener clip' wird nicht gedruckt.

vielen dank!

Antwort

2

Sie müssen clipRecorder.play() oder clipRecorder.play (at :) aufrufen.

+0

Hallo, ich kann keine Startfunktion auf der AKClipRecorder API sehen, http://audiokit.io/docs/Classes/AKClipRecorder.html. * bearbeiten: * oh! Jetzt sehe ich, dass es die Play-Funktion hat, nun, das ist wirklich verwirrend, ich dachte, die Play-Funktion sollte anfangen, den AKClipRecorder zu spielen, er sollte wirklich als Start bezeichnet werden. (Bitte bearbeiten Sie Ihre Antwort, damit ich sie akzeptiere) –

+0

Es ist ein wenig verwirrend, "play" impliziert, dass der Recorder Audio abspielen würde. Hätte als Start bezeichnet werden sollen. – dave234