4

我在 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];

任何帮助将非常感激!

4

3 回答 3

2

iOS 6 的 Apple 文档说要videoOrientation (AVCaptureConnection)改用。

于 2013-04-26T02:10:23.340 回答
1

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

previewLayer.orientation = AVCaptureVideoOrientationLandscapeRight;

我不确定不推荐使用的解决方案是什么。

于 2012-12-04T22:47:36.820 回答
1

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

所以使用:

[[AVCaptureVideoPreviewLayer connection] setVideoOrientation: AVCaptureVideoOrientationLandscapeRight];

或者

AVCaptureVideoPreviewLayer.connection.videoOrientation= AVCaptureVideoOrientationLandscapeRight;
于 2014-06-26T08:01:58.903 回答