Camada de visualização da câmera AVFoundation não funciona
Então, estou tentando implementar uma câmera usando o AVFoundation. Eu acho que faço tudo certo. é isso que estou fazendo
criar sessãoobter dispositivos do tipo de vídeopassar pelos dispositivos para colocar a câmera na parte de trásobter uma entrada de dispositivo usando o dispositivo mencionado no item 3 e adicioná-lo à sessãocriar uma saída do tipoAVCaptureStillImageOutput
definir configurações de saída e adicioná-lo à sessãoobter um CALayer da minha opinião 2 (explicarei abaixo o que eu quero dizer com a visão 2)criar uma instância deAVCaptureVideoPreviewLayer
adicione-o à camada mencionada no item 7comece a executar a sessãoEntão eu tenho 2 visualizações uma sobre a outra. A que está no topo é a Visualização 1 e a que está abaixo é a vista 2. A Visão 1 deve fornecer controles de câmera personalizados.
Aqui está o código:
self.session = [[AVCaptureSession alloc]init];
[self.session setSessionPreset:AVCaptureSessionPresetHigh];
NSArray *devices = [[NSArray alloc]init];
devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];
for (AVCaptureDevice *device in devices){
if([device position] == AVCaptureDevicePositionBack){
self.device = device;
break;
}
}
NSError *error;
self.input = [[AVCaptureDeviceInput alloc]initWithDevice:self.device error:&error];
if([self.session canAddInput:self.input]){
[self.session addInput:self.input];
}
self.stillImageOutput = [[AVCaptureStillImageOutput alloc]init];
NSDictionary *outputSettings = @{AVVideoCodecKey : AVVideoCodecJPEG};
[self.stillImageOutput setOutputSettings:outputSettings];
[self.session addOutput:self.stillImageOutput];
CALayer *cameraLayer = self.cameraView.layer;
self.cameraView.backgroundColor = [UIColor clearColor];
AVCaptureVideoPreviewLayer *preview = [[AVCaptureVideoPreviewLayer alloc]initWithSession:self.session];
[cameraLayer addSublayer:preview];
[self.session startRunning];
O que obtenho é a Visualização 1 (ela tem uma imagem .png como plano de fundo. A imagem tem um buraco para que a vista embaixo, a vista 2 fique visível) e a vista 2 fique visível, mas não vejo o que devo fazer. Porque eu mudei a cor de fundo para a vista 2 para limpar a cor Eu vejo tudo preto. Eu devo ver o que a câmera vê.