播放器的状态:
typedef NS_OPTIONS(NSUInteger, MPMovieLoadState) { MPMovieLoadStateUnknown = 0, /*未知状态*/ MPMovieLoadStatePlayable = 1 << 0, /*加载完成,可以播放*/ MPMovieLoadStatePlaythroughOK = 1 << 1, /*缓冲完成,可以连续播放*/ MPMovieLoadStateStalled = 1 << 2, /*缓冲中*/ } NS_DEPRECATED_IOS(3_2, 9_0) __TVOS_PROHIBITED; 利用这4种状态可以在播放器即将播放时设置开始播放时间(如:播放记录),对于以上4中状态可以进行相应的判断,当状态改变时可以利用通知监听。
在Controller中注册通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayerLoadStateDidChange) name:MPMoviePlayerLoadStateDidChangeNotification object:nil];
在通知中实现方法完成具体的逻辑
duration:播放视频的总时间/** * 视频播放状态改变 */ - (void)moviePlayerLoadStateDidChange { switch (self.krVideoPlayer.loadState) { case MPMovieLoadStatePlayable: { /** 可播放 */; NSLog(@"可以播放"); } break; case MPMovieLoadStatePlaythroughOK: { /** 状态为缓冲几乎完成,可以连续播放 */; NSLog(@"状态为缓冲几乎完成,可以连续播放"); } break; case MPMovieLoadStateStalled: { /** 缓冲中 */ NSLog(@"缓冲中"); } break; case MPMovieLoadStateUnknown: { /** 未知状态 */ NSLog(@"未知状态"); } break; } } currentPlaybackTime:播放器当前播放时间
以上2个属性必须在播放器缓冲完成是才可以得到,不然为0