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() 
} 

任何帮助将不胜感激!

+0

一件事需要注意的是,如果我在pauseAudio函数结束时调用resumePlayback()调用,它会工作......我只是不明白这里有什么问题 – asheinfeld

+0

你试过了,只是忽略了所有的自定义恢复,只是再次调用'play' ?至少这对我有用;)只是有resumePlayback()调用self.player.play() – luk2302

+0

有一件事要考虑的是,寻求需要时间。有一个'seekToTime:toleranceBefore:toleranceAfter:completionHandler:'方法,以便您可以在搜索结束后开始播放。 – matt

哈哈!我今天才发现答案,我一定很累。

基本上我错过了返回指令if语句播放功能

if(self.currentAudioIndex == index) { 
    self.resumePlayback() 
    return //This was missing 
} 

那么实际情况是,音频正被再次装入:)

欢呼声中,