Как убрать задержку между воспроизведением двух файлов в AKAudioPlayer после замены файла? - PullRequest
0 голосов
/ 27 марта 2019

Я хочу воспроизвести один и тот же файл несколько раз подряд, но после воспроизведения файла хочу настроить следующее воспроизведение другим способом. Я могу использовать свойство .looping = true, конечно. Но с включенным циклом я не могувызвать completionHandler в плеере

Мое решение теперь ниже, но при таком подходе у меня есть небольшая задержка при загрузке файла проигрывателем

Могу ли я добиться того же поведения, что и при .looping = true,а также иметь возможность отслеживать, когда один файл должен воспроизводиться следующим?

import UIKit
import AVFoundation
import AudioKit

class TestViewController: UIViewController {

    var file: AKAudioFile!
    var players = [AKAudioPlayer]()
    var mixer: AKMixer!

    override func viewDidLoad() {

        file = try! AKAudioFile(readFileName: "Test Sound.wav")

        for i in 0...5 {
            let player = try! AKAudioPlayer(file: file)
            player.looping = false

            player.completionHandler = {
                self.players[(i + 1) % 6].play()
                print("hey")
            }  
            players.append(player)
        }

        mixer = AKMixer(players)

        AudioKit.output = mixer
        try! AudioKit.start()

        players[0].play()
    }   
}
...