2012-12-04 80 views
4

我正在制作一个自定义相机,在iPad内部有一个小的预览区域,但是,该预览中的流顺时针旋转。AVFoundation相机预览错误的方向

我看过AVCam演示和苹果公司的SquareCam演示,我也没有看到任何解决方案。 StackOverflow上的所有AVFoundation方向线程都专门讨论输出方向,而不是输入方向。

这里是我使用的会话代码:

AVCaptureDevice *frontalCamera = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; 
    _session = [[AVCaptureSession alloc] init]; 
    [_session beginConfiguration]; 
    NSError *error; 
    AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:frontalCamera error:&error]; 
    [_session addInput:input]; 
    _output = [[AVCaptureStillImageOutput alloc] init]; 
    [_output setOutputSettings:[[NSDictionary alloc] initWithObjectsAndKeys:AVVideoCodecJPEG,AVVideoCodecKey,nil]]; 
    [_session addOutput:_output]; 
    AVCaptureVideoPreviewLayer *previewLayer = [AVCaptureVideoPreviewLayer layerWithSession:_session]; 
    previewLayer.frame = self.imageViewCamera.bounds; 
    previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill; 
    [self.imageViewCamera.layer addSublayer:previewLayer]; 
    _session.sessionPreset = AVCaptureSessionPreset640x480; 
    [_session commitConfiguration]; 
    [_session startRunning]; 

任何帮助,将不胜感激!

回答

1

图层的方向。 (不推荐使用iOS中6.0使用videoOrientation (AVCaptureConnection)代替。)

所以要用:

[[AVCaptureVideoPreviewLayer connection] setVideoOrientation: AVCaptureVideoOrientationLandscapeRight]; 

AVCaptureVideoPreviewLayer.connection.videoOrientation= AVCaptureVideoOrientationLandscapeRight; 
1

这已被弃用,但您可以逆时针更改您的previewLayer的方向。

previewLayer.orientation = AVCaptureVideoOrientationLandscapeRight; 

我不确定非弃用解决方案是什么。

+0

这工作,但我想非depricated解决方案。这会做现在,谢谢! –

2

iOS 6的Apple文档声称使用videoOrientation (AVCaptureConnection)代替。