Моя компания нуждается в видеоприложении, поэтому я начинаю работать вчера.Почему неправильное время avplayer в iOS
Вы можете увидеть этот код AVPlayer:
// to get palying time
-(void)addProgressObserver{
__weak typeof(self) weakSelf = self ;
//这里设置每秒执行一次
[self.player addPeriodicTimeObserverForInterval:CMTimeMake(1.0, 1.0) queue:dispatch_get_main_queue() usingBlock:^(CMTime time) {
double current=weakSelf.player.currentItem.duration.value/weakSelf.player.currentItem.duration.timescale*1.0;
weakSelf.playerProgressDuration = current ;
}];
}
// to get total time
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
AVPlayerItem *playerItem=object;
if ([keyPath isEqualToString:@"status"]) {
AVPlayerStatus status= [[change objectForKey:@"new"] intValue];
if(status==AVPlayerStatusReadyToPlay){
self.playerTotalDuration = playerItem.duration.value/playerItem.duration.timescale * 1.0 ;
}
}
}
Вы можете увидеть этот код. метод «addProgressObserver» может получить игровое время:
weakSelf.playerProgressDuration = current ;
метод КВО может слушать свойство (имя свойства является «состояние»), и получить общее время данного видео:
self.playerTotalDuration = playerItem.duration.value/playerItem.duration.timescale * 1.0 ;
но , bulid этот код и работает ipad 3 (ios 8.1), я могу найти проблему:
Воспроизведение видео завершено, но self.playerProgressDuration не может равняться self.playerTotalDuration!
Поэтому я добавляю уведомление: AVPlayerItemDidPlayToEndTimeNotification, но уведомление не может быть выполнено!
Вопрос: 1, Воспроизведение видео завершено, почему self.playerProgressDuration не может равняться self.playerTotalDuration? 2, Воспроизведение видео завершено, Почему уведомление не выполняется?
Пожалуйста, помогите мне, спасибо.