AVAudioRecorder 在录制时播放录制的项目

AVAudioRecorder Play the Recorded Item While Recording

有什么方法可以在录制过程中播放正在录制的文件吗?也就是说,当用户插入带麦克风的耳机时,他可以在对着麦克风说话时通过耳机听到自己的声音,这意味着无需担心循环。

P.S。如果 AVAudioRecorder 不能做到这一点,有没有办法用 AudioKit 做到这一点?如果可以,请告诉我怎么做。

我猜你必须使用 AVCaptureSession 才能做到这一点。

您可以获取来自 AVCaptureDeviceInput 的输入。

然后您可以使用 AVCaptureOutputAudioDataOutput,它可以在录制时访问音频样本缓冲区。

extension RecordingViewController: AVCaptureAudioDataOutputSampleBufferDelegate {
    func captureOutput(_ output: AVCaptureOutput,
                       didOutput sampleBuffer: CMSampleBuffer,
                       from connection: AVCaptureConnection) {
        output.connection(with: AVMediaType(rawValue: AVAudioSessionPortBuiltInSpeaker))
    }
}

编辑: 然而,使用 AudioKit 实现它可能更简单、更清晰。代码将是这样的:

let microphone = AKMicrophone()
let mixer = AKMixer(microphone)
let booster = AKBooster(mixer, gain: 0)
AudioKit.output = booster

microphone.start()
do {
    try AudioKit.start()
} catch {
    print("AudioKit boot failed.")
}