播放时限制音频持续时间
Limit audio duration when played
我正在尝试使用 Swift 4 构建一个可以播放不同声音的 iOS 应用程序。我需要做的部分工作是根据某些设置限制播放声音文件的持续时间。
我想知道是否可以在播放之前设置声音的持续时间,以便在设置的持续时间后停止。如果是这样,如何?
我目前正在使用Swift的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()
在此先感谢您的帮助:)
作为一名音频工程师,我建议您按照自己的意愿编辑音频,以避免在编码过程中出现任何不需要的伪影。
好吧,由于您可以控制播放声音,因此处理它的一种方法是 运行 一个 Timer
当您开始播放时,它会在给定的时间段后停止播放:
let timeLimit = 1.6 // get it from settings
player.play()
Timer.scheduledTimer(withTimeInterval: timeLimit, repeats: false) { (timer) in
player.stop()
}
如果您需要取消它,您可以保留对 timer
的引用并使用 timer.invalidate()
.
取消它
我正在尝试使用 Swift 4 构建一个可以播放不同声音的 iOS 应用程序。我需要做的部分工作是根据某些设置限制播放声音文件的持续时间。
我想知道是否可以在播放之前设置声音的持续时间,以便在设置的持续时间后停止。如果是这样,如何?
我目前正在使用Swift的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()
在此先感谢您的帮助:)
作为一名音频工程师,我建议您按照自己的意愿编辑音频,以避免在编码过程中出现任何不需要的伪影。
好吧,由于您可以控制播放声音,因此处理它的一种方法是 运行 一个 Timer
当您开始播放时,它会在给定的时间段后停止播放:
let timeLimit = 1.6 // get it from settings
player.play()
Timer.scheduledTimer(withTimeInterval: timeLimit, repeats: false) { (timer) in
player.stop()
}
如果您需要取消它,您可以保留对 timer
的引用并使用 timer.invalidate()
.