Лучший способ повторить сцену в видео с помощью MPMoviePlayerController в iOS 5? - PullRequest
8 голосов
/ 19 октября 2011

Я хотел бы повторить несколько сцен из видео несколько раз.
В iOS 4 я уже мог реализовать это, и оно работает.В iOS 5 код больше не работает так же.

Вот пример:
Сцена 1: начинается с 15 секунд до 30 секунд.
Сцена 1 повторяется 5 раз.
Сцена 2: начинается с 45 секунд до 55 секунд.
Сцена 2 повторяется 3 раза.

В iOS 5 сцена 1 повторяется 5 раз.Сцена 2 больше не будет воспроизводиться.

Вот как я решил это для iOS 4:

- (void)initMoviePlayer
{
    // Some other stuff…

   iterations = 5;

   NSDictionary *currentScene = [allScenes objectAtIndex:currentSceneIndex];

   moviePlayer.repeatMode = MPMovieRepeatModeOne;
   // Scene start time
   moviePlayer.initialPlaybackTime = [[currentScene objectForKey:@"StartTime"] intValue];
   // Scene end time
   moviePlayer.endPlaybackTime = [[currentScene objectForKey:@"EndTime"] intValue];

   [moviePlayer play];
}

// Called by MPMoviePlayerPlaybackStateDidChangeNotification
- (void)playerStateChanged:(NSNotification*)notification 
{
    // Some other stuff…

    if (counter == iterations)
    {
        currentSceneIndex++;

        // Stop movie
        [moviePlayer stop];

        // Init movie player with next scene
        [self initMoviePlayer];
    }
    else
    {
        counter++;

        // Scene will repeat because of MPMovieRepeatModeOne
    }
}

1 Ответ

3 голосов
/ 24 октября 2011

Я предлагаю вам попробовать AVPlayer Class ( вот документация от Apple ).Этот класс позволяет вам использовать такие методы, как addBoundaryTimeObserverForTimes:queue:usingBlock: и addPeriodicTimeObserverForInterval:queue:usingBlock:, которые интересны для вашей цели.

...