2010-08-18 1 views
12

사용자가 iPhone 카메라를 사용하여 사진을 찍을 수있는 앱을 만들고 있습니다. (iOS4) AVFoundation을 사용할 수 있으므로 (iOS4) 사용자가 탭하여 초점 맞추기 기능을 사용할 수 있습니다. 맞춤형 오버레이즉시 AVCaptureSession 고정하기

제가하는 데 문제는입니다 비디오가 아직도 어디 혼란 상태가되지 않도록 주 비디오 피드를 프레임 동결하고 싶은 중, 완료하는 데 몇 초 정도 걸립니다captureStillImageAsynchronouslyFromConnection 실행 중이지만 사용자가 사진을 찍었습니다 (카메라 셔터 음이 사라졌습니다).

정지 이미지 캡처를 요청한 직후 [session stopRunning]을 호출 해 보았습니다.하지만 예상치 못한 결과가 발생합니다. 이 경우 정지 영상 완성 블록은 종종 해고되지 않는다.

셔터를 치자 마자 비디오 미리보기 레이어를 "일시 중지"할 수있는 방법에 대한 아이디어가 있습니까?

+0

나도, 내가 다른 본 적이 그 세션을 분리하는 것이 좋습니다를 다음 카메라는 완전히 깨진 불안정합니다. – RainCast

답변

5

나는 똑같은 것을 시도하고있다. 비록 내 경우에 captureStillImageAsynchronouslyFromConnection 반환 0.5 초 걸릴, 그래서 어쩌면 당신은 완료 처리기에서 일부 처리하고 있습니까? 그런 경우에는

, 나는 나를 위해 충분하지 않다 둘 다이 옵션을 함께했다,하지만 난 중 하나입니다 함께했다 당신

을 위해 할 수 있습니다
* stopRunning 전화 캡처 세션에서 완료 핸들러가 호출 될 때 (내 경우 다시 0.5 초) 처리 후 처리 후 startRunning을 다시 호출하십시오.
* 오버레이 상단에 UIImageView가 있고 처리하는 동안이 이미지 뷰에 카메라 또는 비디오 스트림에서 찍은 마지막 사진을 저장합니다.

둘 모두의 해결책에서 나를 낙담시킨 것은 둘 다 프로세스에 몇 초를 추가한다는 것이 었습니다. 그러나 그것이 도움이되었거나 방향을 제시하기를 바랍니다.

건배, Oded.

+0

많은 시도 끝에 올바른 대답입니다. – RainCast

4

간단한 프리즈 프레이밍을 사용하면 화면상의 이미지가 이미 찍혔다는 느낌을 사용자에게 줄 수 있습니다. 이는 적어도 —으로 흐리게 표시됩니다. Camera.app는 "셔터"를 닫음으로써 문제를 해결합니다.

희미한 이미지의 느낌을주기 위해 AVCaptureVideoPreviewLayer 알파를 0.5로 변경할 수 있습니다 (아직 실행중인 경우에도).

다른 옵션은 AVCaptureVideoDataOutput 및 일부 이미지 조작을 사용하여 스틸 이미지를 얻는 것입니다. 불행히도 AVCaptureVideoDataOutput과 AVCaptureStillImageOutput을 동시에 사용하는 것은 불가능합니다. 일시적인 해결책은 다음 비디오 프레임을 가져 와서 "사진 찍기"기능을 구현하는 것입니다 (물론 비디오 해상도에 따라 제한되지만, 프레임에서 이미지 처리 만하고 싶다면 괜찮습니다).

0

이전 답변이지만 호기심에 대한 업데이트가 있습니다. iOS5에서는 AVCaptureStillImageOutput과 AVCaptureVideoDataOutput을 동시에 사용할 수 있습니다. 나는 다음 비디오 프레임과 스틸 이미지를 동시에 캡처하는 데 성공했다. 나는 단순한 페이드 아웃 애니메이션을 사용하여 UI를 숨긴 다음 AVCaptureVideoDataOutput에서 이미지를 다시 가져올 때 다시 페이드 인합니다.이 과정은 AVCaptureStudioImageOutput의 captureStillImageAsynchronouslyFromConnection:completionHandler:을 통해 스틸 이미지를 기다리는 것보다 훨씬 빠릅니다. 그 이유는 AVCaptureVideoDataOutput에서 나오는 더 작고 낮은 품질의 이미지 때문일 가능성이 큽니다.

16

captureVideoPreviewLayer.connection.enabled = NO로 설정하면됩니다. 자세한 내용은

여기에 내 대답은 참조하십시오

AVCaptureSession pause?

+0

이 시도하고 카메라의 이상한 행동으로 연결됩니다. – RainCast

+0

색상이 매우 파란색으로 보이는 사진을 찍는 것을 포함하여 이상한 행동 ... .... 때로는 매우 어둡습니다. – RainCast

+0

이상한 행동을 취한 iOS 버전은 무엇입니까? – DisableR