我的工作,我们将使用iPhone的照相机用于拍摄场景中的项目。 录制时我们需要记录60fps的@而不是30fps的(如原生支持)。 所以,我在一个应用程序的工作要做到这一点作为iPhone 4S的硬件支持720p 60fps的@(如果你越狱你的手机,你可以做到这一点)。
有谁知道如何做到这一点在Objective-C在iOS? 今天我看到一个应用程序在那里(slopro),可以记录在非越狱的手机60fps的。 任何意见或建议,非常感谢。
我的工作,我们将使用iPhone的照相机用于拍摄场景中的项目。 录制时我们需要记录60fps的@而不是30fps的(如原生支持)。 所以,我在一个应用程序的工作要做到这一点作为iPhone 4S的硬件支持720p 60fps的@(如果你越狱你的手机,你可以做到这一点)。
有谁知道如何做到这一点在Objective-C在iOS? 今天我看到一个应用程序在那里(slopro),可以记录在非越狱的手机60fps的。 任何意见或建议,非常感谢。
一些修修补补之后,这个答案已经分成两个部分:
如何捕捉在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
我以前没有尝试这个,也许这些都与:
videoMinFrameDuration
和videoMaxFrameDuration
在AVCaptureConnection类参考 videoMaxFrameDuration
)