2

我对 iPhone 开发非常陌生,我正在制作一个必须播放视频的应用程序,我想做的是在事件发生后播放一定数量的帧。大部分已经完成,但我还不能实现,是如何准确地只播放 50 帧,当我尝试以秒为单位计算 50 帧有多长时,我可以播放/暂停,但过了一段时间,事情开始出错,因为计算不是 100% 正确的

如果有人可以提供帮助,我将很高兴收到任何建议/评论/批评,提前谢谢你:)

PS:我正在使用 MPMoviePlayerController 播放我的视频

问候

编辑:如果您知道除 MPMoviePlayerController 之外的任何其他方法可以满足我的需要,我可以毫无问题地使用它

4

1 回答 1

1

经过长时间的研究,我找不到我正在搜索的内容(即使它存在也不知道),所以我正在考虑解决这个问题,以下是我找到的解决方案:

  1. 将视频文件拆分为我只播放我需要的序列的序列。
  2. 看看我想玩的和真正玩的在时间上的差异,而不是在下一回合纠正它。

对我来说,当我尝试分割视频时,我失去了质量,所以我使用了我在下面描述的第二种方法:

我需要播放 720 帧中的 20 帧,我的帧速率是 25 帧/秒,经过基本计算,我发现 20 帧在 0.8 秒内播放。假设“等待”变量是持续时间(我的情况是 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 ++;

就是这样,如果有人有同样的问题或只是对解决方案感到好奇,请随时与我联系 :)

于 2012-05-10T09:10:17.817 回答