当以queuePlayer
作为AVPlayer
播放视频时,添加了KVO
功能。
[self.queuePlayer addObserver:self forKeyPath:@"status" options:0 context:NULL];
观察者模式
的方法
:
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
if ([keyPath isEqualToString:@"status"]) {
if (self.queuePlayer.status == AVPlayerStatusReadyToPlay) {
NSInteger step = (NSInteger)(startTimeForVideo/0.04);
[self.queuePlayer.currentItem stepByCount:step];
//CMTime seekTime = CMTimeMake(startTimeForVideo*timeScale,timeScale);
//if (CMTIME_IS_VALID(seekTime))
// [self.queuePlayer seekToTime:seekTime toleranceBefore:kCMTimePositiveInfinity toleranceAfter:kCMTimePositiveInfinity];
//else
// NSLog(@"In valid time");
[self.queuePlayer play];
} else if (self.queuePlayer.status == AVPlayerStatusFailed) {
/* An error was encountered */
}
}
这里的
startTimeForVideo
是视频的初始播放时间。
seekToTime
和 stepByCount
都无法正常工作。
编辑: 在方法中使用的 object
的 values
是正确的,尽管没有成功。