Ich habe einen Code gemacht, der Gerät Videoeingang erfasst und bis jetzt funktioniert es gut. Hier ist, was ichWie kann AVCaptureMovieFileOutput die Videoausrichtung während der laufenden Sitzung ändern?
// add preview layer
_previewLayer = [AVCaptureVideoPreviewLayer layerWithSession:_session];
_previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
[self.videoView.layer addSublayer:_previewLayer];
// add movie output
_movieFileOutput = [[AVCaptureMovieFileOutput alloc] init];
[_session addOutput:_movieFileOutput];
AVCaptureConnection *movieFileOutputConnection = [_movieFileOutput connectionWithMediaType:AVMediaTypeVideo];
movieFileOutputConnection.videoOrientation = [self videoOrientationFromCurrentDeviceOrientation];
// start session
[_session startRunning];
gesetzt haben, wo:
- (AVCaptureVideoOrientation) videoOrientationFromCurrentDeviceOrientation {
switch ([[UIApplication sharedApplication] statusBarOrientation]) {
case UIInterfaceOrientationPortrait: {
return AVCaptureVideoOrientationPortrait;
}
case UIInterfaceOrientationLandscapeLeft: {
return AVCaptureVideoOrientationLandscapeLeft;
}
case UIInterfaceOrientationLandscapeRight: {
return AVCaptureVideoOrientationLandscapeRight;
}
case UIInterfaceOrientationPortraitUpsideDown: {
return AVCaptureVideoOrientationPortraitUpsideDown;
}
case UIInterfaceOrientationUnknown: {
return 0;
}
}
}
Nun, wenn Schnittstelle Orientierungsänderungen ich meine Ausgabe wollen auch zu ändern, so habe ich dies:
- (void) updatePreviewLayer {
_previewLayer.frame = CGRectMake(0, 0, self.videoView.frame.size.width, self.videoView.frame.size.height);
_previewLayer.connection.videoOrientation = [self videoOrientationFromCurrentDeviceOrientation];
[_session beginConfiguration];
AVCaptureConnection *movieFileOutpurConnection = [_movieFileOutput connectionWithMediaType:AVMediaTypeVideo];
movieFileOutpurConnection.videoOrientation = [self videoOrientationFromCurrentDeviceOrientation];
[_session commitConfiguration];
}
Aber leider funktioniert es nicht. Es scheint, sobald ich zuerst die Videoausrichtung auf die Filmausgabe eingestellt habe, bleibt es wie folgt, es kann später nicht mehr geändert werden. Wenn ich also im Querformat und dann im Hochformat filme, ist das Video für den Querformatmodus geeignet, aber der Hochformatmodus wird gedreht. Das gleiche gilt, wenn ich im Hochformat starte, wird die Landschaft gedreht.
Gibt es eine Möglichkeit, dies richtig zu machen?