0

我有 ipad 应用程序,我在其中播放视频我希望当用户播放视频时,如果它观看视频 2 秒,那么它应该显示警报时间用户观看视频的时间或持续时间

这是我用来播放视频的代码。

            [[mp moviePlayer] prepareToPlay];
    [[mp moviePlayer] setUseApplicationAudioSession:NO];
    [[mp moviePlayer] setShouldAutoplay:YES];
    [[mp moviePlayer] setControlStyle:2];
    //[[mp moviePlayer] setRepeatMode:MPMovieRepeatModeOne];
    [self presentMoviePlayerViewControllerAnimated:mp];
4

4 回答 4

1

MPMoviePlayerController 生成通知以使您的应用了解电影播放的状态。

1、电影播放器​​开始播放、暂停或开始向前或向后搜索时 2、AirPlay 播放开始或结束时。详情请点击这里

使用通知并收集 currentPlaybackTime 属性和视频持续时间属性以进行进一步计算。

- (void)MPMoviePlayerLoadStateDidChange:(NSNotification *)notification
{
    if ((player.loadState & MPMovieLoadStatePlaythroughOK) == MPMovieLoadStatePlaythroughOK)
    {
        NSLog(@"content play length is %g seconds", player.duration);
    }
}
于 2013-08-19T05:52:28.717 回答
0

您可以记录开始日期和结束日期,然后比较日期以查看视频播放了多长时间。

日期也包括时间。

所以:

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];

那是你要找的吗?

于 2013-08-19T05:48:39.467 回答
0

协议中的currentPlaybackTime属性MPMediaPlayback为您提供了该信息。

查看协议的currentPlaybackTime属性。遵守该协议,因此您可以直接在该类的任何实例上使用它。MPMediaPlaybackMPMoviePlayerController

MPMoviePlayerController *player = [...];
[...]
NSLog(@"current time: %g", player.currentPlaybackTime);
From the MPMediaPlayback Reference;

currentPlaybackTime 播放头的当前位置。

@property(nonatomic) NSTimeInterval currentPlaybackTime
于 2013-08-19T05:51:17.380 回答
0

查看MPMediaPlayback 协议

currentPlaybackTime:对于从服务器实时流式传输的内容,此值表示播放列表第一次加载时开始的时间。

于 2013-08-19T05:53:13.410 回答