Как запустить камеру в ландшафтном режиме

я заставил свое приложение запускаться только в ландшафтном режиме, а не в портретном. На экране я открываю камеру для записи видео в UIView с использованием AVFoundation. Но его ориентация не меняется как ландшафт.. Идеи?

- (void) CameraSetOutputProperties
{
//SET THE CONNECTION PROPERTIES (output properties)
AVCaptureConnection *CaptureConnection = [MovieFileOutput connectionWithMediaType:AVMediaTypeVideo];

//Set landscape (if required)
if ([CaptureConnection isVideoOrientationSupported])
{
    AVCaptureVideoOrientation orientation = AVCaptureVideoOrientationLandscapeRight; //<<<<<SET VIDEO ORIENTATION IF LANDSCAPE
    [CaptureConnection setVideoOrientation:orientation];
}
}

//

- (void)initializeCamera {
captureSession = [[AVCaptureSession alloc]init];
captureSession.sessionPreset = AVCaptureSessionPresetHigh;

_previewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:captureSession];
[_previewLayer setVideoGravity:AVLayerVideoGravityResizeAspectFill];
  ....

if (!frontCamera) {
    NSError *error = nil;
    AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:backCamera error:&error];
    if (!input) {
        NSLog(@"ERROR: trying to open camera: %@", error);
    }
    [captureSession addInput:input];
}
if (frontCamera) {
    NSError *error = nil;
    AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:frontCamera error:&error];
    if (!input) {
        NSLog(@"ERROR: trying to open camera: %@", error);
    }
    [captureSession addInput:input];
}

[captureSession startRunning];

person dicle    schedule 28.10.2015    source источник
comment
Он меняет ориентацию или только видео не меняет ориентацию?   -  person Sandeep    schedule 28.10.2015
comment
когда я запускаю приложение в альбомной ориентации, ориентация видео неправильная.. кажется, что все еще в портретной ориентации (верхняя или нижняя кнопка «Домой»).. @GeneratorOfOne   -  person dicle    schedule 28.10.2015


Ответы (1)


Если ваша ориентация меняется, но ориентация вашего видео остается прежней, вы также должны изменить свойство videoOrientation вашего AVCaptureConnection,

Вы можете использовать это, используя метод viewWillTransitionToSize:withTransitionCoordinator: как,

 override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
         super.viewWillTransitionToSize(size, withTransitionCoordinator: coordinator)

        if size.width > size.height {
            capturePreviewLayer.connection.videoOrientation = .LandscapeLeft
        } else {
            capturePreviewLayer.connection.videoOrientation = .Portrait
        }
    }

И это должно работать для вашего случая.

person Sandeep    schedule 28.10.2015