如何跟踪ipad应用程序中播放的持续时间视频



我有一个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];

这就是你想要的吗?

最新更新