1.关于avplaer缓冲
项目需求播放的时候缓冲视频,暂停的时候停止缓冲。
通过NSTemporaryDirectory()打印查看缓存文件发现,如果一开始监听loadedTimeRanges会生成一个缓存文件,如果不监听的话是没有的,只有播放完整个视频才会出现个缓存文件。所以需要缓冲的时候只需监听loadedTimeRanges,不需要缓冲的时候移除监听。
注意监听和移除要一一配对,不然会引起崩溃
2.监听播放时间
- (void)addProgressObserver
{
__weak typeof(self) weakSelf = self;
_timeObser = [self.player addPeriodicTimeObserverForInterval:CMTimeMake(1.0, 1.0) queue:dispatch_get_main_queue() usingBlock:^(CMTime time)
{
[weakSelf updateCurrentTime:time];
[weakSelf updateSliderValue:time];
}];
}
不需要时记得移除监听,虽然不移除也没事,但是会占用大量内存资源
3.slider拖动进度时,change时需要移除监听时间,不然进度条会一直跳。拖动完成时
[_slider addTarget:self action:@selector(sliderBtnClick:) forControlEvents:UIControlEventTouchUpInside | UIControlEventTouchCancel | UIControlEventTouchUpOutside];
如果只执行UIControlEventTouchUpInside,拖动太快会没有反应,执行了其他事件
slider缓冲的实现:
我是直接继承UISlider,然后添加的一个progressView。等有空了上传git,可以直接继承slider使用,简便方便快捷
暂时就这些,后续再补充