如何跟踪 AVAudioFoundation 中的循环次数
How to track the number of loops in AVAudioFoundation
我正在 iOS 项目中制作一个音频播放器。
我通过传递 url 的名称和音频文件将播放的次数来设置 play(audioOfUrl:URL, for times:Int)
方法,如下所示:
func play(audioOfUrl:URL, for times:Int) {
let urlPath = audioOfUrl
loopsLeftOver = times
do {
let audio = try AVAudioPlayer.init(contentsOf: urlPath)
audioPlayer = audio
audio.play()
audio.numberOfLoops = times - 1
} catch let error {
print(error.localizedDescription)
}
}
还会有 pause()
和 resume()
,我需要做的是跟踪音频播放器剩余的循环数。
例如,如果我这样调用 play 方法:
play(audioOfUrl:audioUrl, for times:5)
我需要关注音频播放器剩余的时间运行。
我尝试用AVAudioPlayerDelegate
的方法,但是不行,如何关注audio.numberOfLoops?提前致谢。
您可以订阅 AVPlayerItemDidPlayToEndTime 通知并统计调用此通知的处理程序的次数。
NotificationCenter.default.addObserver(self, selector:#selector(playerItemDidReachEnd(_:)),
name: NSNotification.Name.AVPlayerItemDidPlayToEndTime,
object: audioPlayer.currentItem)
我正在 iOS 项目中制作一个音频播放器。
我通过传递 url 的名称和音频文件将播放的次数来设置 play(audioOfUrl:URL, for times:Int)
方法,如下所示:
func play(audioOfUrl:URL, for times:Int) {
let urlPath = audioOfUrl
loopsLeftOver = times
do {
let audio = try AVAudioPlayer.init(contentsOf: urlPath)
audioPlayer = audio
audio.play()
audio.numberOfLoops = times - 1
} catch let error {
print(error.localizedDescription)
}
}
还会有 pause()
和 resume()
,我需要做的是跟踪音频播放器剩余的循环数。
例如,如果我这样调用 play 方法:
play(audioOfUrl:audioUrl, for times:5)
我需要关注音频播放器剩余的时间运行。
我尝试用AVAudioPlayerDelegate
的方法,但是不行,如何关注audio.numberOfLoops?提前致谢。
您可以订阅 AVPlayerItemDidPlayToEndTime 通知并统计调用此通知的处理程序的次数。
NotificationCenter.default.addObserver(self, selector:#selector(playerItemDidReachEnd(_:)),
name: NSNotification.Name.AVPlayerItemDidPlayToEndTime,
object: audioPlayer.currentItem)