【问题标题】:Objective-C: Playing video by frameObjective-C:逐帧播放视频
【发布时间】:2012-04-26 14:28:26
【问题描述】:

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

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

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

问候

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

【问题讨论】:

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


    【解决方案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 ++;
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-13
      • 2013-06-16
      • 1970-01-01
      • 2011-04-03
      • 2015-09-02
      • 2012-05-29
      • 1970-01-01
      • 2013-07-12
      相关资源
      最近更新 更多