私は、ユーザーが「鏡」(デバイスの正面カメラ)で自分自身を見ることができるアプリを作成しています。ビューオーバーレイを使用してUIImageViewControllerを作成する複数の方法を知っていますが、アプリで逆の方法にする必要があります。私のアプリでは、カメラビューをメインビューのサブビューにし、シャッターアニメーションや写真のキャプチャやビデオの撮影を行わず、フルスクリーンにしないようにします。何か案は?
質問する
4603 次
1 に答える
15
これを実現する最善の方法は、組み込みのUIImagePickerControllerを使用するのではなく、AVFoundation
クラスを使用することです。
を作成しAVCaptureSession
、適切な出力と入力を設定する必要があります。AVCapturePreviewLayer
構成が完了すると、ViewControllerで構成したビューに追加できるを取得できます。プレビューレイヤーには、プレビューの表示方法を制御できるいくつかのプロパティがあります。
AVCaptureSession *session = [[AVCaptureSession alloc] init];
AVCaptureOutput *output = [[AVCaptureStillImageOutput alloc] init];
[session addOutput:output];
//Setup camera input
NSArray *possibleDevices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];
//You could check for front or back camera here, but for simplicity just grab the first device
AVCaptureDevice *device = [possibleDevices objectAtIndex:0];
NSError *error = nil;
// create an input and add it to the session
AVCaptureDeviceInput* input = [AVCaptureDeviceInput deviceInputWithDevice:device error:&error]; //Handle errors
//set the session preset
session.sessionPreset = AVCaptureSessionPresetMedium; //Or other preset supported by the input device
[session addInput:input];
AVCaptureVideoPreviewLayer *previewLayer = [AVCaptureVideoPreviewLayer layerWithSession:session];
//Set the preview layer frame
previewLayer.frame = self.cameraView.bounds;
//Now you can add this layer to a view of your view controller
[self.cameraView.layer addSublayer:previewLayer]
[session startRunning];
次にcaptureStillImageAsynchronouslyFromConnection:completionHandler:
、出力デバイスのを使用して画像をキャプチャできます。
AVFoundationの構造の詳細と、これを行う方法の例については、AppleDocsを確認してください。AppleのAVCamDemoは、これらすべてを同様にレイアウトします
于 2012-06-27T18:03:06.113 に答える