-->

在iPhone应用程序拍摄60fps的(Capture 60fps in iPhone app)

2019-06-24 00:33发布

我的工作,我们将使用iPhone的照相机用于拍摄场景中的项目。 录制时我们需要记录60fps的@而不是30fps的(如原生支持)。 所以,我在一个应用程序的工作要做到这一点作为iPhone 4S的硬件支持720p 60fps的@(如果你越狱你的手机,你可以做到这一点)。

有谁知道如何做到这一点在Objective-C在iOS? 今天我看到一个应用程序在那里(slopro),可以记录在非越狱的手机60fps的。 任何意见或建议,非常感谢。

Answer 1:

一些修修补补之后,这个答案已经分成两个部分:

如何捕捉在60fps帧

在AVCaptureSessionPreset1280x720上的iPhone4s / 5.1,与帧持续时间设置为:

connection.videoMinFrameDuration = CMTimeMake(1, 60);*
connection.videoMaxFrameDuration = CMTimeMake(1, 60);

给你一个稳定,超光滑捕获。

如何捕获帧到文件@ 60fps的
捕获帧都非常好,但想必你想留住他们。
布拉德在评论中指出的,写这些帧到一个文件是另一回事。 可悲的是,无论我试了一下配置,通过编码帧AVAssetWriter导致捕获率下降到所观察到的〜37fps,并没有乱搞的量alwaysDiscardsLateVideoFrames可以改变它。 然而,在这种方法中的每一个帧从AVFoundation复制到你的应用程序,然后再回来,这是毫无意义的,很穿着公共汽车。 幸运的是, AVFoundation有一类删除此往返: AVCaptureMovieFileOutput

如果让AVFoundation做写作对你那么的iPhone4S可捕捉并编码帧+音频在60fps .mov文件*不费吹灰之力(〜25%的CPU)。

虽然60fps的视频拍摄是很大的特点,我不禁感到有点失望,因为AVCaptureMovieFileOutput排除了很多有趣的事情(例如用GL着色器实时效果,录制开始/停止无丢帧)。

蛋糕/吃

* 59,如果你还在运行iOS 5.0.1



Answer 2:

我以前没有尝试这个,也许这些都与:

  • 设定的最大帧速率与AVFoundation在IOS 5
  • videoMinFrameDurationvideoMaxFrameDuration在AVCaptureConnection类参考
  • CMTime参考 (需要用于设置videoMaxFrameDuration


文章来源: Capture 60fps in iPhone app