Я пытаюсь использовать AVPlayer для воспроизведения аудио с внешнего URL-адреса (.mp3 файлов, хранящихся в Amazon S3).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()
}
Любая помощь будет принята с благодарностью!
Одна вещь что если я вызываю вызов resumePlayback() в конце функции pauseAudio, ЭТО РАБОТАЕТ ... Я просто не могу понять, что здесь не так – asheinfeld
вы пробовали просто игнорировать все пользовательские возобновления и просто называть 'play' снова ? По крайней мере, это работает для меня;) просто есть resumePlayback() call self.player.play() – luk2302
Одна вещь, которую следует учитывать, - это то, что поиск требует времени. Существует метод 'seekToTime: toleranceBefore: toleranceAfter: completeHandler:', чтобы вы могли начать игру после окончания поиска. – matt