2

我正在尝试实现录制某些东西(麦克风或振荡器或任何其他输入)的能力,我需要它在录制完成后立即执行回调方面尽可能准确,所以我认为 ClipRecorder 可以在这里帮助我. 这段代码进入一个简单的视图控制器的viewDidLoad函数,代码执行到最后,但剪辑记录器的回调从未执行。

你能告诉我我做错了什么吗?我对 AudioKit 很陌生,所以这可能是我对事物的误解。这是代码:

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")
}

打印日志 1,2,不打印“录制的剪辑”。

非常感谢!

4

1 回答 1

2

您必须调用 clipRecorder.play() 或 clipRecorder.play(at:)。

于 2017-11-17T03:29:27.820 回答