Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 限制播放时的音频持续时间_Ios_Swift_Avfoundation - Fatal编程技术网

Ios 限制播放时的音频持续时间

Ios 限制播放时的音频持续时间,ios,swift,avfoundation,Ios,Swift,Avfoundation,我正在尝试使用Swift 4构建一个可以播放不同声音的iOS应用程序。我需要做的一部分是根据一些设置限制声音文件的播放时间 我想知道的是,是否可以在播放之前设置声音的持续时间,以便在设置的持续时间后停止播放。如果是,怎么做 我目前正在使用斯威夫特的AVAudioPlayer,但我不知道它是否能做到这一点。我的当前代码如下所示: // resName set depending on settings url = Bundle.main.url(forResource: resName, wit

我正在尝试使用Swift 4构建一个可以播放不同声音的iOS应用程序。我需要做的一部分是根据一些设置限制声音文件的播放时间

我想知道的是,是否可以在播放之前设置声音的持续时间,以便在设置的持续时间后停止播放。如果是,怎么做

我目前正在使用斯威夫特的AVAudioPlayer,但我不知道它是否能做到这一点。我的当前代码如下所示:

// 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我需要进一步测试,但我现在会接受你的答案。我明白了,这看起来不错。即使我必须连续播放很多声音,这仍然可以很好地工作吗。。我想你得试试看才知道。。您可以在
计时器
的块中使用递归,在计时器完成后重新播放新声音。。如果保留对
计时器的引用
,则可以随时取消。。我看不出这有什么理由不起作用。。