2016-04-06 2 views
2

Im возникли проблемы с поиском с AVPlayer.seekToTime, у меня есть индекс времени, который я хочу обратиться к внутри метода scrollViewDidScroll как это:AVPlayer seekToTime не работает должным образом

func scrollViewDidScroll(scrollView: UIScrollView) { 
    let offsetTime = scrollView.contentOffset.y * 0.1 

    self.playerController.player?.seekToTime(CMTime(seconds: Double(offsetTime), preferredTimescale: 10), toleranceBefore: kCMTimePositiveInfinity, toleranceAfter: kCMTimeZero) 

} 

Но видео не течет хороший. Например, когда вы прокручиваете, я хочу, чтобы видео двигалось только вперед, как 0,01 секунды (видео, которое у меня действительно короткое, всего около 2,0 секунд), но когда вы прокручиваете достаточно далеко, вместо этого видео перемещается вперед почти целая секунда , Его действительно прерывистый характер, и я не уверен, почему я не могу попытаться сказать, что от 1,00 секунд до 1,01 секунды, и изображение, представляющее индекс времени на игровом ходу. Это возможно? Что я делаю не так? Пожалуйста помоги!

PS: Я никогда не называю self.playerController.player .play(), если это помогает

+0

попробуйте выбрать время: 10000 и сохранить все остальное – amergin

ответ

2

Может быть, ваша терпимость, прежде чем не установлен правильно. попробуйте следующее:

вместо кода:

let offsetTime = scrollView.contentOffset.y * 0.1 
    let seekTime : CMTime = CMTimeMake(Double(offsetTime), 1000) 
self.playerController.player?.seekToTime(seekTime, toleranceBefore: kCMTimeZero, toleranceAfter: kCMTimeZero) 
  • Шкала времени показывает, сколько единиц вы имеете в секунду
  • Кроме того, toleranceBefore должен быть также kCMTimeZero

надежда это помогает :-)

0

Эй, я пробовал приведенный выше код в проекте Xamarin, используя O ctane.Xam.Videoplayer: https://components.xamarin.com/view/video-player

Это сработало очень хорошо!

Вот мой пример кода, который я поставил в пользовательских видеообработки, которые унаследовали от VideoPlayerRenderer, который можно найти в пространстве имен Octane.Xam.VideoPlayer.iOS.Renderers:

public void CustomSeek(int seekTime) 
    { 
     CMTime tm = new CMTime(seekTime, 10000); 
     if(NativeVideoPlayer.Player != null) 
      NativeVideoPlayer.Player.Seek(tm, CMTime.Zero, CMTime.Zero); 
    } 

Имейте в виду, что вы будете должны использовать версию 1.1.4 Octane.Xam.VideoPlayer, чтобы получить доступ к свойству NativeVideoPlayer для VideoPlayerRenderer. В будущем это свойство может быть переименовано в PlayerControl.