8

ビデオのいくつかのシーンを何度か繰り返したいと思います。
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
    }
}
4

1 に答える 1

3

AVPlayerクラスを試してみることをお勧めします(これがAppleのドキュメントです)。このクラスを使用すると、のようなメソッドを使用できaddBoundaryTimeObserverForTimes:queue:usingBlock:addPeriodicTimeObserverForInterval:queue:usingBlock:両方とも目的に合ったものになります。

于 2011-10-23T23:39:12.443 に答える