在iPhone应用程序中捕获60fps

时间:2012-04-27 04:15:00

标签: iphone ios recording avcapturesession

我正在开发一个项目,我们将使用iPhone作为捕捉场景的摄像头。录制时我们需要录制@ 60fps而不是30fps(原生支持)。所以我正在开发一款应用程序来实现这一点,因为iPhone 4S硬件支持720p @ 60fps(如果你越狱你的手机你可以实现这一点)。

有人知道如何在iOS上的Objective-C中执行此操作吗?今天我看到一个应用程序(slopro)可以在非越狱手机上录制60fps。任何建议或提示都非常感谢。

2 个答案:

答案 0 :(得分:15)

经过一些修补,这个答案分为两部分:

如何以60fps

捕获帧

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

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

为您提供稳定,超级流畅的捕捉。

如何将帧捕获到文件@ 60fps
捕获帧非常好,但可能你想保留它们 正如Brad在评论中指出的那样,将这些帧写入文件是另一回事。 遗憾的是,无论我尝试什么配置,通过AVAssetWriter对帧进行编码都会导致捕获率下降到观察到的~37fps,而alwaysDiscardsLateVideoFrames的任何数量都不会改变它。然而,在这种方法中,每一帧都从AVFoundation复制到你的应用程序,然后再回来,这对于公共汽车来说是毫无意义的。幸运的是,AVFoundation有一个类可以删除此往返:AVCaptureMovieFileOutput

如果你让AVFoundation为你写作,那么iPhone4S可以以60fps *的速度捕获和编码帧+音频到.mov文件,而不会出汗(~25%CPU)。

虽然60fps的视频捕捉功能很棒,但我感到有些失望,因为AVCaptureMovieFileOutput排除了许多有趣的事情(例如GL着色器的实时效果,录制开始/停止而没有帧丢失) 。

蛋糕/吃它

* 59如果您仍在运行iOS 5.0.1

答案 1 :(得分:7)

我之前没有尝试过,也许这些是相关的: