Замена аудио файла для воспроизведения AKAudioPlayer не работает - PullRequest
1 голос
/ 06 апреля 2020

У меня есть приложение, в котором я хочу иметь один аудиоплеер и возможность переключать аудиоклипы в проигрывателе. В настоящее время используются AKAudioPlayer и replace(file: audioFile).

. У меня есть следующий класс, который создается при загрузке контроллера представления:

class AudioFilePlayer {
    var songFile = Bundle.main
    var player: AKAudioPlayer!


    func play(file: String, type: String)    {
        var audioFile: AKAudioFile!
        let song = songFile.path(forResource: file, ofType: type)

        do {
            let url = URL(string: song!)
            audioFile = try AKAudioFile(forReading: url!)
        } catch {
            AKLog(error)
        }

        do {
            player = try AKAudioPlayer(file: audioFile)
        } catch {
            AKLog(error)
        }

    }

    func rePlay(file: String, type: String) {
        var audioFile: AKAudioFile!
        let song = songFile.path(forResource: file, ofType: type)

        do {
            let url = URL(string: song!)
            audioFile = try AKAudioFile(forReading: url!)
        } catch {
            AKLog(error)
        }

        do {
           try player.replace(file: audioFile)

        } catch {
            AKLog(error)
        }
    }

    func pause(){
        player.pause()
    }
}

После запуска приложения у меня есть следующий код для настройте цепочку сигналов АК и создайте проигрыватель с аудиофайлом, и я немедленно приостановил его:

audioFilePlayer.play(file: "Breathing_01", type: ".mp3")
audioFilePlayer.player.looping = false

AudioKit.output = audioFilePlayer.player

do {
          try AudioKit.start()
      } catch {
          AKLog("AudioKit did not start!")
      }
audioFilePlayer.player.play()
audioFilePlayer.pause()

В другом месте приложения у меня есть следующий код для замены аудиофайла, используемого в проигрывателе:

self.audioFilePlayer.player.pause()
self.audioFilePlayer.rePlay(file: "Breathing_01", type: "mp3")
self.audioFilePlayer.player.play()

Когда я запускаю приложение и запускаю процесс попытки заменить файл, я вижу этот журнал:

2020-04-05 17:32:13.674413-0700 Mindful[24081:4439478] [general] AKAudioPlayer.swift:replace(file:):397:AKAudioPlayer -> File with "Breathing_01.mp3" Reloaded (AKAudioPlayer.swift:replace(file:):397)
2020-04-05 17:32:13.686119-0700 Mindful[24081:4439478] [general] AKAudioPlayer.swift:startTime:171:AKAudioPlayer.startTime = 0.0, startingFrame: 0 (AKAudioPlayer.swift:startTime:171)
2020-04-05 17:32:14.282632-0700 Mindful[24081:4439478] [general] AKAudioPlayer.swift:updatePCMBuffer():570:read 13359773 frames into buffer (AKAudioPlayer.swift:updatePCMBuffer():570)

Но аудио вообще не выводится. При установке точек останова я могу подтвердить, что мой проигрыватель играет, но не имеет звука.

Любая помощь приветствуется!

...