0

Мне нужно играть в .mov в моем приложении ios 6.MPMoviePlayerController Как приостановить .mov на определенных контрольных точках?

Знаете ли вы, как я могу обрабатывать паузу и останавливать ее при заданных контрольных точках времени?

Я попытался с NSTimer, запускающего каждые х секунд в checkCurrentPlabackTime действий, который проверяет по списку контрольных точек ..

Но это не точно! иногда не останавливает, где я хочу .. другой не останавливается на всех

#define kTimer 0.01 
#define kAccuracy 0.01 

- (void)viewDidLoad 
{ 

    [..] 

pauseTimeArray = [NSArray arrayWithObjects: 
        [NSNumber numberWithFloat:2.00] , 
        [NSNumber numberWithFloat:10.00] , 
        [NSNumber numberWithFloat:12.30] , 
        [NSNumber numberWithFloat:16.00] , 
        [NSNumber numberWithFloat:18.80] , 
        nil]; 

[NSTimer scheduledTimerWithTimeInterval:kTimer 
           target:self 
           selector:@selector(timeAction) 
           userInfo:nil repeats:YES]; 
} 

- (void)timeAction{ 


// Check next breakpoint find the difference with the actual (Es. 02:00 - 00:00) -> I need you to stop again in 2 seconds 



if (self.player.playbackState == MPMoviePlaybackStatePlaying) { 

//self.player is my mpMoviePlayerController instance 
    NSNumber * positionNum = [NSNumber numberWithFloat:self.player.currentPlaybackTime]; 

    float positionFloat = [positionNum floatValue]; 
    NSLog(@"positionFloat:%f",positionFloat); 

    for (NSNumber * pauseNum in pauseTimeArray) { 

     float pauseFloat = [pauseNum floatValue]; 

     float differentFloat = fabsf(pauseFloat - positionFloat); 

     if (differentFloat < kAccuracy) { 
      [self.player pause]; 

      NSDictionary * dicInfo = [[NSDictionary alloc] initWithObjectsAndKeys:pauseNum,@"pauseIndex", nil]; 
      [[NSNotificationCenter defaultCenter] 
          postNotificationName:LSMoviePlayerPlaybackDidPauseNotification 
              object:self 
             userInfo:dicInfo]; 

      } 
     } 
    } 
} 
+0

Мое предположение для точки останова не стрельбы на всех: Указанная точность может быть слишком жесткой, 0,01 означает, что вы ожидаете, что таймер будет стрелять с точностью 100 секунд, обычный таймер, безусловно, не будет соответствовать этому, поскольку он работает в основном цикле. – Till

+0

Вы решили эту проблему? – tipycalFlow

ответ

-1
double loadTime =moviePlayerController.playableDuration; 
double currentTime =moviePlayerController.currentPlaybackTime; 
double totalTime =moviePlayerController.duration; 

вы можете приостановить MPMoviewplayercontroller в определенное время, используя текущее время

+0

Как бы это помогло, поскольку OP явно использует currentPlaybackTime. – Till

 Смежные вопросы

  • Нет связанных вопросов^_^