众所周知,在观看视频时,很多用户都有切换视频清晰度的需求,毕竟超清就是看的爽!所以,很多视频类的app都会有清晰度切换的功能。但是,很多app并没有在清晰度切换的时候给用户很好的体验效果,如下图:
- (IBAction)qualityAction:(id)sender {
_switchTime =[self.playerView getCurrentPlayTime];
_isSwitch =YES;
_isChange =NO;
[self.playerView pause];//暂停
//获取缩略图 显示在播放器所在的页面上
_imageView.image =[self.playerView getThumbnailImageFromVideoURL:[NSURL URLWithString:VideoURL] time:_switchTime];
_imageView.hidden =NO;
//加载
[self.playerView setURL:[NSURL URLWithString:VideoURL]];
}
复制代码
第二步:在播放器的代理方法里判断缓冲时间,如果缓冲时间大于等于当前播放时间,就让播放器播放,然后显示的imageView也一并隐藏,这样的效果就非常不错!
//duration 当前缓冲的长度
- (void)videoPlayer:(LYAVPlayerView *)playerView loadedTimeRangeDidChange:(CGFloat )duration{
NSLog(@"当前缓冲的长度%f",duration);
if (_isChange) return;
if (duration >= _switchTime && _isSwitch) {
_imageView.hidden =YES;
[self.playerView seekToTime:_switchTime];
[self.playerView play];
_isChange =YES;
}
}
复制代码
最后,动画效果大家自己添加哈。 GitHub源码