2010-02-17 4 views
0

애플은 공식적으로 아이폰 앱에서 UIGetScreenImage()를 사용할 수 있도록 허용했기 때문에 구형 모델을 포함 해 아이폰에서 비디오 캡처를 위해 "홍수 게이트를 열었다"는 블로그가 많이있다. 그러나 UIGetScreenImage()로 얻을 수있는 가장 빠른 프레임 속도는 6FPS와 같은 블로그를 보았습니다.iPhone의 UIGetScreenImage()가 실제로 수행 할 수있는 프레임 수는 얼마나됩니까?

UIGetScreenImage() (또는 다른 승인 된 API)로 얻은 특정 프레임 속도 결과를 공유 할 수 있습니까? 캡처 된 화면의 영역을 제한하면 프레임 속도가 크게 향상됩니까?

또한 요즘의 프로그램에서 희망찬 생각을하기 위해 UIGetScreenImage()를 사용하여 비디오를 캡처하는 코드/라이브러리에 대한 지침을 가진 사람이 있습니까? 예를 들어, 나는 API (int fps, Rect bounds, int durationMs)와 같은 API를 원한다. 카메라를 켜면 주어진 프레임 속도로 .png 파일의 시퀀스를 주어진 기간 동안 복사한다. 스크린 rect.

답변

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()의 원시 성능은 적어도 15fps보다 훨씬 높아야합니다.

반환 된 이미지를 자르려면, 당신은 시도 할 수

extern CGImageRef UIGetScreenImage(void); 

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