我正在使用以下代码两次播放声音文件。第二个声音紧接着第一个声音播放
是否可以在它们之间留出时间间隔(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 :(
}
}
答案 0 :(得分:1)
一种选择是在音频文件的末尾添加一些“空白”或静音。
如果您没有音频编辑器,我建议您Audacity,它是免费的,how to add silence.上有很多教程
如果您想要更多基于代码的选项,可以使用AVAudioPlayerDelegate
didFinishPlaying方法来检测第一场比赛的结束,然后使用play(atTime:)
触发下一个循环从现在开始1秒。
func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer, successfully flag: Bool) {
player.play(atTime: player.deviceCurrentTime + 1.0)
}
此代码未经测试,我认为它可能会创建一个无限循环,因此您可能需要在此处添加一些逻辑以确保其仅循环一次