AVPlayer SeekToTime无法正常工作。从每个时候开始

时间:2015-07-29 21:59:30

标签: ios swift avplayer uislider cmtime

我在使用UISliderAVPlayer清理方法时遇到问题。每次调用该方法时,播放器都会从0重新启动。我尝试调试并且看起来滑块值是正确的但是当我跳过时,它设置为0,因此播放器重新启动。这就是我尝试过的:

    var desiredTime = CMTimeMake(Int64(self.progressSlider.value), 1)

    AudioManager.sharedInstance.audioPlayer.seekToTime(desiredTime)

我也尝试过查看类似的问题,发现尝试解决方案的时候也是如此。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

使用该方法不对。您可以在图书馆中查找。

var desiredTime = CMTimeMake(self.progressSlider.value *1000, 1000);
AudioManager.sharedInstance.audioPlayer.seekToTime(desiredTime)

答案 1 :(得分:0)

正如我在评论中指出的那样,您需要将滑块最小值设置为0,将其最大值设置为正在播放的资源的持续时间。

要在播放器播放时使滑块移动,请向播放器添加定期观察者。例如:

CMTime interval = CMTimeMakeWithSeconds(.25,1000); [_player addPeriodicTimeObserverForInterval:interval queue:NULL usingBlock:
    (CMTime time)){ NSTimeInterval t = CMTimeGetSeconds(time);
         mySlider.value = t; }];

(您可能需要弱访问自我才能访问mySlider。) 该块的时间参数是玩家的当前时间。

当用户滑动时,使用seekToTime设置玩家位置。

一个警告:虽然这有效,但滑块的增量将显示为拇指的小跳跃。我还没有想出一个让滑块连续移动的简单方法 - 可能值得一提自己的问题。