2010-11-30 6 views
1

카메라에 디지털 줌 슬라이더를 구현하려면 어떻게해야합니까? 다음 API를 사용합니다 : AVCaptureVideoPreviewLayer, AVCaptureSession, AVCaptureVideoDataOutput, AVCaptureDeviceInput.카메라 디지털 줌 in ios 4.0 이상

아이폰 4 카메라 앱에서 사용할 수있는 동일한 슬라이더를 갖고 싶습니다.

미리 알려 주시면 감사하겠습니다.

답변

1

저는 초보자입니다. AVCaptureVideoPreviewLayer를 사용하여 AVFoundation 프레임 워크에서만 확대/축소를 시도했으나 작동하지 못합니다. 그 레이어 자체의 출력을 제어하는 ​​자체 AVCaptureSession을 가지고 있기 때문에 UIScrollView에 하위 레이어로 추가 했더라도 여전히 자체 레이어에서 실행되며 스크롤 레이어는 미리보기 레이어에 영향을 줄 수 없습니다.

WWDC 세션 (419)에서

, "iOS5를에 AVFoundation을 사용하여 카메라에서 캡처"브래드 포드는 "고 말했다 AVCaptureVideoPreviewLayer는 AVCaptureOutput (AVCaptureVideoDataOutput이하는 것처럼)에서 상속하지 않습니다. 그것은 같은 (의 CALayer에서 상속하지만 핵심 애니메이션 트리에 삽입 할 수 있습니다 다른 레이어) AVFoundation에서 AVSession은 출력을 소유하지만 레이어는 소유하지 않습니다. 레이어는 세션을 소유하므로보기 계층에 레이어를 삽입하려면 세션을 첨부하고 잊어 버리십시오. 그런 다음 레이어 트리가 자체적으로 처리되면 세션도 정리됩니다. "

난에 오픈 GL ES와 AVFoundation 프레임 워크의 조합을 사용하여, 브래드 라슨를 보았다 : 그는 카메라에서 원시 데이터를 조정할 수있는 AVCaptureVideoPreviewLayer를 사용 http://www.sunsetlakesoftware.com/2010/10/22/gpu-accelerated-video-processing-mac-and-ios , 그래서 나는 시작하는 곳 이잖아 가정합니다. 그의 ColorTrackingCamera 응용 프로그램을 확인하십시오. 당신이 사용하는 쉐이더 (그리고 나)는 확대 할 필요가 없지만 유사한 메커니즘을 사용하여 확대/축소 할 수 있다고 생각합니다.

오, 나는 Brad Larson이 AVCaptureInput을 AVCaptureSession에 첨부하지 않는다는 것을 잊었습니다. 다른 스레드에서 자신의 큐를 만드는 대신 자신의 큐에 대한 주 스레드를 사용하고 있음을 알 수 있습니다. drawFrame에 대한 그의 OpenGL ES 메소드는 그가 이미지를 렌더링하는 방법이기도하며 캡처 세션 자체가 그 작업을 수행하지 않습니다. 그래서, 당신이 더 많이 이해하거나, 내 가정이 틀렸다면, 저에게도 알려주십시오.

희망이 있지만,이 모든, 및 OpenGL ES 새로운 오전 이후 나는 우리가 각 프레임을 캡처하고 UIImage 다른 해상도 및/또는 프레임 크기.

제프 더블유