我在使用UISlider
和AVPlayer
清理方法时遇到问题。每次调用该方法时,播放器都会从0重新启动。我尝试调试并且看起来滑块值是正确的但是当我跳过时,它设置为0,因此播放器重新启动。这就是我尝试过的:
var desiredTime = CMTimeMake(Int64(self.progressSlider.value), 1)
AudioManager.sharedInstance.audioPlayer.seekToTime(desiredTime)
我也尝试过查看类似的问题,发现尝试解决方案的时候也是如此。
感谢您的帮助。
答案 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设置玩家位置。
一个警告:虽然这有效,但滑块的增量将显示为拇指的小跳跃。我还没有想出一个让滑块连续移动的简单方法 - 可能值得一提自己的问题。