iOS AVPlayer监听视频播放进度

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];
                                             }

                                         }];

你可能感兴趣的:(iOS AVPlayer监听视频播放进度)