我正在制作一个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];
非常感谢任何帮助!
答案 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;