AVPlayer视频播放时 我们常常需要获取当前视频的播放进度 来自定义一些操作 比如重复播放 播放结束后弹出广告等 下面是系统提供的监听AVPlayer视频播放进度的方法:方法传入 时间间隔 时间单位 和线程队列 并在boock中返回CMTime类型的时间进度
__weak typeof(self)WeakSelf = self;
__strong typeof(WeakSelf) strongSelf = WeakSelf;
[self.avPlayer addPeriodicTimeObserverForInterval:CMTimeMakeWithSeconds(1, NSEC_PER_SEC)
queue:NULL
usingBlock:^(CMTime time) {
//进度 当前时间/总时间
CGFloat progress = CMTimeGetSeconds(WeakSelf.avPlayer.currentItem.currentTime) / CMTimeGetSeconds(WeakSelf.avPlayer.currentItem.duration);
//在这里截取播放进度并处理
if (progress == 1.0f) {
//播放百分比为1表示已经播放完毕
WeakSelf.centerPlayBtn.hidden = NO;
//处理成员变量在block中报警告问题
strongSelf -> isplay = NO;
//改变播放按钮状态
[WeakSelf.bottomPlayBtn setImage:[UIImage imageNamed:@"视频播放"] forState:UIControlStateNormal];
//停止并移除计时器
[WeakSelf stopTimer];
[WeakSelf removeTimer];
//强制竖屏
[WeakSelf orientationToPortrait:UIInterfaceOrientationPortrait];
[WeakSelf endView];
}
}];
网友评论