AVFoundation相机预览错误的方向

时间:2012-12-04 22:41:01

标签: iphone objective-c xcode ipad avfoundation

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

我在Apple上看过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];

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

previewLayer.orientation = AVCaptureVideoOrientationLandscapeRight;

我不确定这个未弃用的解决方案是什么。

答案 2 :(得分:1)

  

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

所以使用:

[[AVCaptureVideoPreviewLayer connection] setVideoOrientation: AVCaptureVideoOrientationLandscapeRight];

AVCaptureVideoPreviewLayer.connection.videoOrientation= AVCaptureVideoOrientationLandscapeRight;