Воспроизведение на AKPlayer.buffer - PullRequest
       14

Воспроизведение на AKPlayer.buffer

0 голосов
/ 05 сентября 2018

Здравствуйте. Я записываю звук с помощью 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

Я ценю помощь:)

...