AVAudioPlayer声音不会在1秒内播放

时间:2016-03-17 17:19:13

标签: xcode swift avaudioplayer

我有0.2秒长的声音文件" beep.caf"我想要快速发挥。如果我将声音设置为相隔1秒播放,它们播放得很好,但是如果我将它们设置为播放不到0.8,则只播放第一个声音。我也有使用AudioServicesPlaySystemSound的同样问题。

为了快速播放声音,我有以下功能:

func runAfterDelay(delay: NSTimeInterval, block: dispatch_block_t) {
    let time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay * Double(NSEC_PER_SEC)))
    dispatch_after(time, dispatch_get_main_queue(), block)
}

我首先使用以下内容在viewDidLoad中设置声音:

let path = NSBundle.mainBundle().pathForResource("beep", ofType: "caf")!
let url = NSURL(fileURLWithPath: path)
    do{
        self.startBeep = try AVAudioPlayer(contentsOfURL: url)
        self.startBeep.prepareToPlay()

    }catch{
        print("Audio didn't load")
    }

然后按下按钮时,将运行以下代码:

let start_time:Double = 1.0
let end_time:Double = start_time + 0.8

    runAfterDelay(start_time ) {
        self.startBeep.play()
    }
runAfterDelay(end_time ) {
        self.startBeep.play()
    }

我试图在下一场比赛前停止发声,但这也无济于事。我甚至复制了should文件(beep& beepStop),看它是否与播放相同的声音文件有关,我也遇到了同样的问题。

任何想法??

1 个答案:

答案 0 :(得分:0)

问题在于时间而不是球员。延迟时间应该是十分之一毫秒,但是是100毫秒(.1对.01),它在哔哔声之间的时间非常短,而且往往没有准确地发射。当时间设置为1.0秒时,会创建误报。