AudioPlayer(Swift)-播放声音两次-带间隙

时间:2019-01-21 16:55:58

标签: swift avaudioplayer

我正在使用以下代码两次播放声音文件。第二个声音紧接着第一个声音播放

是否可以在它们之间留出时间间隔(1秒)?我试图找到一种解决方法,请阅读Apple Docs

var letterSound: AVAudioPlayer!

...


     @IBAction func speakLetter(sender: AnyObject) {

            let soundFile: String  = "SoundFile" + String(letterNumber)

            let path = Bundle.main.path(forResource: soundFile, ofType:"mp3")!
            let url = URL(fileURLWithPath: path)

            do {
                let sound = try AVAudioPlayer(contentsOf: url)
                letterSound = sound
                letterSound.numberOfLoops = 1
                letterSound.play()

            } catch {
                // couldn't load file :(
            }

        }

1 个答案:

答案 0 :(得分:1)

一种选择是在音频文件的末尾添加一些“空白”或静音。

enter image description here

如果您没有音频编辑器,我建议您Audacity,它是免费的,how to add silence.上有很多教程


如果您想要更多基于代码的选项,可以使用AVAudioPlayerDelegate didFinishPlaying方法来检测第一场比赛的结束,然后使用play(atTime:)触发下一个循环从现在开始1秒。

func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer, successfully flag: Bool) {
    player.play(atTime: player.deviceCurrentTime + 1.0)
}

此代码未经测试,我认为它可能会创建一个无限循环,因此您可能需要在此处添加一些逻辑以确保其仅循环一次