2010-02-17 51 views
0

既然Apple已經正式允許UIGetScreenImage()在iPhone應用程序中使用,那麼我已經看到許多博客表示,這將爲iPhone上的視頻捕捉(包括舊版本)打開「閘門」。但我也看到博客說,他們可以用UIGetScreenImage()獲得的最快幀速率就像6 FPS。iPhone的UIGetScreenImage()實際上可以做多少個fps?

任何人都可以與UIGetScreenImage()(或其他批准的API)共享特定的幀速率結果嗎?限制捕獲的屏幕區域是否顯着提高幀速率?

另外,對於今天的程序的如意算盤,有沒有人有指向使用UIGetScreenImage()捕獲視頻的代碼/庫?例如,我想要一個類似Capture(int fps,Rect bounds,int durationMs)的API來打開相機,並且在給定的時間內以給定的幀速率記錄一系列.png文件,從給定幀速率複製屏幕矩形。

回答

1

沒有特定的幀率。 UIGetScreenImage()不是電影記錄器。它只是儘可能快地返回,不幸的是仍然很慢。

限制捕獲的屏幕區域是無用的。 UIGetScreenImage不接受任何輸入參數。裁剪輸出圖像可能會導致幀率由於工作過多而變得更糟。

0

UIGetScreenImage()返回當前屏幕顯示的圖像。據說速度很慢,但速度是否足夠取決於用例。視頻錄製應用程序iCamcorder正在使用此功能。

根據他們的博客,在一個顯着的平均最小每秒10幀的和的最大每秒15幀的

iCamcorder記錄。

UIGetScreenImage方法Apple最近允許開發人員使用捕獲當前屏幕內容。不幸的是,它真的很慢,約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); 
相關問題