Здравствуйте. Я записываю звук с помощью Audiokit AKNodeRecorder, затем я передаю эти данные в проигрыватель, выполняю некоторую обработку и теперь пытаюсь воспроизвести его снова. Однако я не могу заставить его работать.
Я пытался воспроизвести буфер через AKPlayer или создать новый AKAudioFile без игры в кости.
Вот код, с которым я сейчас работаю:
tape = recorder.audioFile!
player.load(audioFile: tape)
player.buffering = .always
recorder.stop()
var globalAudioFile: AKAudioFile?
if let avAudioPCMBuffer = player.buffer {
//do processing on avAudioPCMBuffer here
do {
globalAudioFile = try AKAudioFile()
} catch let error as NSError {
print("Recorder Error: Unable to open AudioFile: \(error.localizedDescription)")
}
do {
globalAudioFile = try AKAudioFile(forWriting: (globalAudioFile?.url)!,
settings: (globalAudioFile?.processingFormat.settings)!)
} catch let error as NSError {
print("Recorder Error: cannot write to \(globalAudioFile?.fileNamePlusExtension)")
print(error.localizedDescription)
}
do {
try globalAudioFile?.write(from: avAudioPCMBuffer)
} catch let error as NSError {
print("Recoder Error: Unable to write buffer to AudioFile: \(error.localizedDescription)")
}
if let audioFile = globalAudioFile {
let bufferedPlayer = audioFile.player
bufferedPlayer.play()
}
}
//later when I wish to play:
if let audioFile = globalAudioFile {
let bufferedPlayer = audioFile.player
bufferedPlayer.play()
}
Когда я пытаюсь играть, я получаю исключение.
Я создал пример проекта здесь, если кто-то хотел бы протестировать его: https://gitlab.com/Donwangugi/AVAudioPCMBufferExample
Я ценю помощь:)