AV Foundation을 사용하는보기 컨트롤러가 있습니다. View 컨트롤러가로드 되 자마자 사용자는 입력 장치가보고있는 것을 정확히 볼 수 있습니다. 이것은 viewDidLoad 메서드 구현에서 AVCaptureSession을 시작했기 때문입니다. 여기 AV Foundation을 사용하여 스틸 이미지를 캡처하려고 할 때 계속 "비활성/잘못된 연결이 통과되었습니다."오류가 발생합니다.
내가있는 viewDidLoad에있는 코드이다[super viewDidLoad];
AVCaptureSession *session =[[AVCaptureSession alloc]init];
[session setSessionPreset:AVCaptureSessionPresetHigh];
AVCaptureDevice *inputDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
NSError *error = [[NSError alloc]init];
AVCaptureDeviceInput *deviceInput = [AVCaptureDeviceInput deviceInputWithDevice:inputDevice error:&error];
if([session canAddInput:deviceInput])
[session addInput:deviceInput];
AVCaptureVideoPreviewLayer *previewLayer = [[AVCaptureVideoPreviewLayer alloc]initWithSession:session];
[previewLayer setVideoGravity:AVLayerVideoGravityResizeAspectFill];
CALayer *rootLayer = [[self view]layer];
[rootLayer setMasksToBounds:YES];
[previewLayer setFrame:CGRectMake(0, 0, rootLayer.bounds.size.width, rootLayer.bounds.size.height/2)];
[rootLayer insertSublayer:previewLayer atIndex:0];
[session startRunning];
그리고 I이 뷰 컨트롤러의 접속있는 UIButton되었습니다 IBAction를 구현 방법이있다. 여기에 IBAction를 구현의 코드입니다 : 내 아이폰 응용 프로그램을 실행하고이 구현에 연결된 버튼을 누르면
AVCaptureStillImageOutput *stillImageOutput = [[AVCaptureStillImageOutput alloc]init];
AVCaptureConnection *connection = [[AVCaptureConnection alloc]init];
[stillImageOutput captureStillImageAsynchronouslyFromConnection:connection completionHandler:^(CMSampleBufferRef imageDataSampleBuffer, NSError *error) {
NSLog(@"Image Data Captured: %@", imageDataSampleBuffer);
NSLog(@"Any errors? %@", error);
if(imageDataSampleBuffer) {
NSData *imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageDataSampleBuffer];
UIImage *image = [[UIImage alloc]initWithData:imageData];
NSLog(@"%@", image);
}
}];
, 나는 콘솔에서이 오류를 얻을 :
*** -[AVCaptureStillImageOutput captureStillImageAsynchronouslyFromConnection:completionHandler:] - inactive/invalid connection passed.'
내가에서 보았다 xcode 워드 프로세서 및 "canAddConnection : YES를 반환하는 경우에만 addConnection을 사용하여 세션에 AVCaptureConnection 인스턴스를 추가 할 수 있지만"내 AVCaptureSession 개체에서 addConnection 및 canAddConnection에 대한 메서드 호출을 시도했지만 표시하지 않습니다 옵션으로 사용할 수 있습니다.
또한 iOS의 경우 수동으로 연결을 만들지 않아도되지만 내 IBAction의 코드에 입력이 필요한 captureStillImageAsynchronouslyFromConnection:
의 메서드 호출이 있기 때문에 이것이 나에게 맞는 것은 아닙니다.
그래서 연결이 자동으로 만들어지면 입력을 위해 사용할 수 있도록 전화가 무엇입니까?
AV Foundation에서 작업 한 것은 이번이 처음이며이 연결 오류를 알 수없는 것 같습니다.
도움을 주시면 대단히 감사하겠습니다.