Ios 限制播放时的音频持续时间
我正在尝试使用Swift 4构建一个可以播放不同声音的iOS应用程序。我需要做的一部分是根据一些设置限制声音文件的播放时间 我想知道的是,是否可以在播放之前设置声音的持续时间,以便在设置的持续时间后停止播放。如果是,怎么做 我目前正在使用斯威夫特的AVAudioPlayer,但我不知道它是否能做到这一点。我的当前代码如下所示:Ios 限制播放时的音频持续时间,ios,swift,avfoundation,Ios,Swift,Avfoundation,我正在尝试使用Swift 4构建一个可以播放不同声音的iOS应用程序。我需要做的一部分是根据一些设置限制声音文件的播放时间 我想知道的是,是否可以在播放之前设置声音的持续时间,以便在设置的持续时间后停止播放。如果是,怎么做 我目前正在使用斯威夫特的AVAudioPlayer,但我不知道它是否能做到这一点。我的当前代码如下所示: // resName set depending on settings url = Bundle.main.url(forResource: resName, wit
// resName set depending on settings
url = Bundle.main.url(forResource: resName, withExtension: "mp3")
do{
audioPlayer = try AVAudioPlayer(contentsOf: url!)
audioPlayer.prepareToPlay()
audioPlayer.currentTime = 0
} catch let error as NSError{
print(error.debugDescription)
}
audioPlayer.play()
提前感谢您的帮助:)作为一名音频工程师,我建议您按照自己的意愿编辑音频,以避免编码过程中出现任何不必要的瑕疵。好吧,因为您可以控制声音的播放,一种处理方法是在开始播放时运行
计时器,在给定时间段后停止播放:
let timeLimit = 1.6 // get it from settings
player.play()
Timer.scheduledTimer(withTimeInterval: timeLimit, repeats: false) { (timer) in
player.stop()
}
如果您需要取消它,您可以保留对计时器的引用,并使用timer.invalidate()取消它。
请发布您迄今为止尝试过的代码。如果你需要进一步的帮助,嗨@creyD谢谢你的建议,我添加了一小段代码:)@Grey你是怎么解决的?@MilanNosáľ很抱歉这么晚才回复,但你的建议奏效了,所以我猜它很好:D我需要进一步测试,但我现在会接受你的答案。我明白了,这看起来不错。即使我必须连续播放很多声音,这仍然可以很好地工作吗。。我想你得试试看才知道。。您可以在计时器
的块中使用递归,在计时器完成后重新播放新声音。。如果保留对计时器的引用
,则可以随时取消。。我看不出这有什么理由不起作用。。