我有一个ipad应用程序,我在其中播放视频,我希望当用户播放视频时,如果它观看视频2秒,那么它应该显示提醒时间用户观看视频的时间或持续时间
这是我用来播放视频的代码。
[[mp moviePlayer] prepareToPlay];
[[mp moviePlayer] setUseApplicationAudioSession:NO];
[[mp moviePlayer] setShouldAutoplay:YES];
[[mp moviePlayer] setControlStyle:2];
//[[mp moviePlayer] setRepeatMode:MPMovieRepeatModeOne];
[self presentMoviePlayerViewControllerAnimated:mp];
MPMoviePlayerController生成通知,让您的应用程序了解电影播放的状态。
1、当电影播放器开始播放、暂停或开始向前或向后搜索时2、当AirPlay播放开始或结束时。有关详细信息,请点击此处
使用通知并收集currentPlaybackTime属性和视频持续时间属性以进行进一步计算。
- (void)MPMoviePlayerLoadStateDidChange:(NSNotification *)notification
{
if ((player.loadState & MPMovieLoadStatePlaythroughOK) == MPMovieLoadStatePlaythroughOK)
{
NSLog(@"content play length is %g seconds", player.duration);
}
}
MPMediaPlayback
协议中的currentPlaybackTime
属性会为您提供该信息。
看看MPMediaPlayback
协议的currentPlaybackTime
属性。MPMoviePlayerController
遵守该协议,因此您可以在该类的任何实例上直接使用它。
MPMoviePlayerController *player = [...];
[...]
NSLog(@"current time: %g", player.currentPlaybackTime);
From the MPMediaPlayback Reference;
当前播放时间播放头的当前位置。
@property(nonatomic) NSTimeInterval currentPlaybackTime
看看MPMediaPlayback协议。
currentPlaybackTime:对于从服务器直播的内容,此值表示从播放列表开始第一次加载时的时间。
您可以记录开始日期和结束日期,然后比较日期以查看视频播放的时间。
日期也包括时间。
因此:
1) 当用户按下播放键时,您可以进入:
NSDate *startPlayDate = [NSDate date];
2) 当用户停止视频时,你可以去:
NSDate *stopPlayDate = [NSDate date];
3) 现在比较两个日期的差异,你应该看到用户播放视频的时间有多少秒:
NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier: NSGregorianCalendar];
NSDateComponents* components = [gregorianCalendar components: NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit
fromDate:startPlayDate
toDate:stopPlayDate
options:0] ;
NSString *message = [[NSString alloc] initWithFormat:@"Video played for: %d hours, %d minutes, %d seconds", components.hour, components.minute, components.second];
UIAlert *alert = [[UIAlertView alloc] initWithTitle:@"Duration"
message:message
delegate:self
cancelButton:@"OK"
otherButton:nil, nil];
[alert show];
这就是你想要的吗?