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