替换文件后如何消除在AKAudioPlayer中播放两个文件之间的延迟?

时间:2019-03-27 02:22:58

标签: swift avfoundation audiokit

我想连续播放几次相同的文件,但是在播放完文件后,想要以另一种方式配置下一次播放 我可以使用.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()
    }   
}

0 个答案:

没有答案