如何解决AudioKit 如何处置或重用 AKNodeRecorder
在我的应用中,我为用户提供了创建多个具有不同名称的录音的选项。
我使用以下记录:
let tape = try AKAudioFile.init(forWriting: URL.init(fileURLWithPath: path),settings: [AVFormatIDKey: kAudioFormatMPEG4AAC,AVSampleRateKey: 44100,AVNumberOfChannelsKey: 2,AVEncoderBitRateKey: 192000,AVEncoderAudioQualityKey:AVAudioQuality.high.rawValue])
let recorder = try AKNodeRecorder(node: masterMixer,file: tape)
try recorder.record()
// Some time later
recorder.stop()
一切正常,我得到了录制的音频,我可以播放它并听到音乐,但这是我的要求。这适用于一个录音。现在我需要录制另一个录音。
我该怎么办?我是否创建另一个 AKNodeRecorder 并再次像这样绑定它?如果是这种情况,是不是一直绑定会导致内存泄漏?
解决方法
使用 AKNodeRecorder 录制音频文件后,您可以重复使用它。在再次录制之前重置它:
func startRecordingAudio() {
do {
try self.recorder?.reset()
try recorder?.record()
} catch {
print("Error starting audio recording")
}
}
这会将录音保存到同一个文件中。因此,为了保存每一个录音,您应该在完成每个录音后将录音文件移动到最终目的地。
func stopRecording() {
recorder?.stop()
if let recordedURL = recorder?.audioFile?.url {
let uuid = NSUUID().uuidString
let destinationPath = NSTemporaryDirectory() + "/" + uuid + ".caf"
let destinationURL = URL(fileURLWithPath: filePath)
let fileManager = FileManager.default
do {
try fileManager.moveItem(at: recordedURL,to: destinationURL)
} catch {
print("Could not copy file")
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。