AVPlayer seekToTime从头播放
问题描述:
我试图使用AVPlayer播放来自外部URL(存储在Amazon S3中的文件的.mp3)音频。AVPlayer seekToTime从头播放
我可以让播放器完美播放并停止播放音乐,但是当我尝试恢复时,它会从头开始播放。
我的播放/暂停和恢复代码如下
func playAudio(index: Int) {
if(self.currentAudioIndex == index) {
self.resumePlayback()
}
self.currentAudioIndex = index;
let selectedAudio = self.audios[index]
let url = selectedAudio.url!
self.playerItem = AVPlayerItem(URL:NSURL(string:url))
self.player = AVPlayer(playerItem:self.playerItem)
self.player.rate = 1.0;
self.player.play()
}
func pauseAudio(index: Int) {
if(self.currentAudioIndex != index) {
return
}
self.playerLastTime = self.player.currentTime()
self.player.pause()
}
func resumePlayback() {
let timeScale = self.player.currentItem.asset.duration.timescale;
let seconds = CMTimeGetSeconds(self.playerLastTime!)
let time = CMTimeMakeWithSeconds(seconds, timeScale)
self.player.seekToTime(time, toleranceBefore: kCMTimeZero, toleranceAfter: kCMTimeZero)
self.player.play()
}
任何帮助将不胜感激!
答
哈哈!我今天才发现答案,我一定很累。
基本上我错过了返回指令if语句播放功能
if(self.currentAudioIndex == index) {
self.resumePlayback()
return //This was missing
}
那么实际情况是,音频正被再次装入:)
欢呼声中,
一件事需要注意的是,如果我在pauseAudio函数结束时调用resumePlayback()调用,它会工作......我只是不明白这里有什么问题 – asheinfeld
你试过了,只是忽略了所有的自定义恢复,只是再次调用'play' ?至少这对我有用;)只是有resumePlayback()调用self.player.play() – luk2302
有一件事要考虑的是,寻求需要时间。有一个'seekToTime:toleranceBefore:toleranceAfter:completionHandler:'方法,以便您可以在搜索结束后开始播放。 – matt