2013-08-19 2 views
0

У меня есть приложение ipad, в котором я проигрываю видео, которое я хочу, когда пользователь воспроизводит видео, если он просматривает видео 2 секунды, тогда он должен показывать время, сколько времени пользователь просматривал видео или продолжительностькак отслеживать продолжительность видео времени, воспроизводимого в приложении ipad

вот код, который я использую для воспроизведения видео.

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

ответ

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

Это то, что вы искали?

0

Недвижимость currentPlaybackTime в протоколе MPMediaPlayback дает вам эту информацию.

Посмотрите на currentPlaybackTime свойство протокола MPMediaPlayback. MPMoviePlayerController придерживается этого протокола, поэтому вы можете использовать его непосредственно в любом экземпляре этого класса.

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

currentPlaybackTime Текущее положение ползунка.

+0

Я использую как это, но он дает ошибку NSLog (@ "текущее время:% g", mp.currentPlaybackTime); –

+0

currenPlayBackTime не найден объект MPMoviePlayerViewController –

1

MPMoviePlayerController генерирует уведомления, чтобы информировать ваше приложение о состоянии воспроизведения фильма.

1, Когда игровой автомат начинает воспроизведение, приостанавливается или начинается поиск вперед или назад 2, Когда начинается или заканчивается воспроизведение AirPlay. Для получения дополнительной информации: click here

Используйте уведомления и соберите свойство currentPlaybackTime и свойство продолжительности видео для дальнейших вычислений.

- (void)MPMoviePlayerLoadStateDidChange:(NSNotification *)notification 
{ 
    if ((player.loadState & MPMovieLoadStatePlaythroughOK) == MPMovieLoadStatePlaythroughOK) 
    { 
     NSLog(@"content play length is %g seconds", player.duration); 
    } 
}
+1

Я был в середине написания ответа.+1 –

+0

Я пишу этот код, но он дает ошибку loadstate не найден –

+0

Вот документ http://developer.apple.com/library/ios/documentation/MediaPlayer/Reference/MPMoviePlayerController_Class/Reference/Reference.html#// apple_ref/occ/instp/MPMoviePlayerController/loadState –

0

Посмотрите на MPMediaPlayback Protocol.

currentPlaybackTime: Для получения контента транслироваться в прямом эфире с сервера, это значение представляет собой время от начала списка воспроизведения, когда он впервые был загружен.