0

J'ai forcé mon application à lancer uniquement en mode paysage au lieu de portrait. Sur l'écran, j'ouvre cam pour enregistrer une vidéo dans un UIView en utilisant AVFoundation. Mais son orientation ne change pas en tant que paysage .. Idées?Comment lancer la caméra en mode paysage

- (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]; 
+0

Change-t-il d'orientation ou la vidéo ne change-t-elle pas d'orientation? – Sandeep

+0

lorsque je lance l'application sur le paysage, l'orientation de la vidéo n'est pas bonne .. semble toujours sur le portrait (bouton d'accueil haut ou bas) .. @GeneratorOfOne –

Répondre

0

Si vous changez d'orientation, mais votre orientation vidéo reste, même, vous devez également modifier votre propriété videoOrientation de AVCaptureConnection,

Vous pouvez l'utiliser en utilisant viewWillTransitionToSize: avecTransitionCoordinator: méthode comme,

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 
     } 
    } 

Et cela devrait fonctionner pour votre cas.