Objective-C:逐帧播放视频

时间:2012-04-26 14:28:27

标签: iphone objective-c video xcode4.3 mpmovieplayer

我对iPhone开发很新,我正在制作一个我必须播放视频的应用程序,我想做的是在事件发生时播放一定数量的帧。大部分都已经完成,但我还没有实现,是如何完全只播放50帧,当我尝试计算50帧的秒数时,我能够进行播放/暂停但是过了一段时间,事情开始出错,因为计算不是100%正确

如果有人可以提供帮助,我会非常喜欢接受任何建议/评论/评论,请提前感谢:)

P.S:我正在使用MPMoviePlayerController播放我的视频

此致

编辑:如果你知道除了MPMoviePlayerController以外我可以做任何其他方法,我可以毫无问题地使用它

1 个答案:

答案 0 :(得分:1)

经过长时间的研究,我无法找到我正在搜索的内容(即使它存在也不知道),所以我想到了解决方案,以下是我找到的解决方案:

  1. 将视频文件拆分为仅播放我需要的序列的序列。
  2. 查看我想玩的内容与实际播放内容之间的时间差,而不是在下一回合纠正它。
  3. 对我来说,当我试图分割视频时,我失去了质量,所以我使用了第二种方法,我正在描述:

    我需要在720帧中播放20帧,我的帧速率为25帧/秒,经过基本计算后,我发现在0.8秒内播放了20帧。让我们说“等待”变量是持续时间(对于我的情况来说是0.8,但是需要一些修正)我想玩(我会稍后如何计算)

    首先,我在课堂上定义了一个静态“计时器”:

        static NSTimer *timer;
    

    因为我正在循环播放,所以每次我需要播放一个序列时(我要确定),我需要重新计时,而不是将其重新创建为新的并设置将被调用的函数以暂停视频(pauseVideoAtAnimation):

        [timer invalidate];
        timer = [NSTimer scheduledTimerWithTimeInterval:wait target:self selector:@selector(pauseVideoAtAnimation:) userInfo:nil repeats:NO];
    

    比我播放视频:

        [player.moviePlayer play]
    

    之后我们需要添加的是pauseVideoAtAnimation中暂停视频的指令

        [self.player.moviePlayer pause];
    

    所有这些我甚至在求助之前都已经完成了,所以等待变量的修正有什么变化,以下是指令(这里我们需要一个从0开始的计数器,并计算我们多少次播放了一个序列)

         double wait = 0.8;
         wait += (counter * wait - self.player.moviePlayer.currentPlaybackTime);
         counter ++;
    

    就是这样,如果有任何人有同样的问题或只是对解决方案感到好奇,请不要犹豫与我联系:)