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 回答