AVFoundation相机预览方向错误

4

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

我已经查看了苹果公司的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个回答

2
苹果iOS 6的文档建议使用videoOrientation (AVCaptureConnection)代替。

1

这已经被弃用了,但是您可以将预览层的方向逆时针旋转。

previewLayer.orientation = AVCaptureVideoOrientationLandscapeRight;

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


那个方法可行,但我想要一个非废弃的解决方案。现在这个可以用,谢谢! - William T.

1

图层的方向。(在iOS 6.0中已弃用。请改用 videoOrientation (AVCaptureConnection))

所以使用:

[[AVCaptureVideoPreviewLayer connection] setVideoOrientation: AVCaptureVideoOrientationLandscapeRight];

或者

AVCaptureVideoPreviewLayer.connection.videoOrientation= AVCaptureVideoOrientationLandscapeRight;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接