在iPhone应用程序中捕获60fps

Mic*_*hel 16 iphone recording ios avcapturesession

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

有没有人知道如何在iOS上的Objective-C中做到这一点?今天我看到一个应用程序(slopro)可以在非越狱手机上录制60fps.任何建议或提示非常感谢.

Rhy*_*man 15

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

如何以60fps捕获帧

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

connection.videoMinFrameDuration = CMTimeMake(1, 60);*
connection.videoMaxFrameDuration = CMTimeMake(1, 60);
Run Code Online (Sandbox Code Playgroud)

为您提供稳定,超顺畅的捕捉.

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

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

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

蛋糕/吃它

*59如果您仍在运行iOS 5.0.1


Hai*_*lei 7

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