iPhone的UIGetScreenImage()实际上有多少fps?

时间:2010-02-17 14:20:56

标签: iphone video-capture

既然Apple正式允许在iPhone应用程序中使用UIGetScreenImage(),我已经看到一些博客说这会为iPhone上的视频捕获“打开闸门”,包括旧型号。但我也看过博客说他们用UIGetScreenImage()获得的最快帧速率就像是6 FPS。

任何人都可以分享您使用UIGetScreenImage()(或其他经过批准的API)获得的特定帧率结果吗?限制捕获的屏幕区域会显着提高帧速率吗?

另外,对于今天的程序的一厢情愿的部分,是否有人指向使用UIGetScreenImage()捕获视频的代码/库?例如,我想要一个像Capture(int fps,Rect bounds,int durationMs)这样的API,它可以打开相机并在给定的持续时间内以给定的帧速率记录一系列.png文件,从给定的帧复制屏幕矩形。

2 个答案:

答案 0 :(得分:1)

没有特定的帧速率。 UIGetScreenImage()不是电影录像机。它只是尽可能快地返回,不幸的是仍然很慢。

限制捕获的屏幕区域是没用的。 UIGetScreenImage不接受任何输入参数。裁剪输出图像可能会因帧数过多而使帧速率更差。

答案 1 :(得分:0)

UIGetScreenImage()返回当前屏幕显示的图像。它被认为是缓慢的,但它是否足够快取决于用例。视频录制应用程序iCamcorder正在使用此功能。

根据他们的博客,

  

iCamcorder的平均最低记录为每秒10帧,最高为每秒15帧。

     

UIGetScreenImage方法Apple最近允许开发人员使用捕获当前屏幕内容。不幸的是,它真的很慢,App的处理时间大约有15%用于调用此方法。 http://www.drahtwerk.biz/EN/Blog.aspx/iCamcorder-v19-and-Giveaway/?newsID=27

所以UIGetScreenImage()的原始性能应该至少远高于15 fps。

要裁剪返回的图像,可以尝试

extern CGImageRef UIGetScreenImage(void);

...
CGImageRef cgoriginal = UIGetScreenImage();
CGImageRef cgimg = CGImageCreateWithImageInRect(cgoriginal, rect);            
UIImage *viewImage = [UIImage imageWithCGImage:cgimg];
CGImageRelease(cgoriginal);                
CGImageRelease(cgimg);