iPhone应用程序 - 在横向模式下显示AVFoundation视频

时间:2011-06-08 20:11:58

标签: iphone video rotation avfoundation avcam

我正在使用Apple的AVCam示例应用程序。

此示例使用AVFoundation在视图上显示视频。

我试图从AVCam制作一个没有运气的风景应用程序。

当屏幕方向改变时,视频会在视图上旋转显示。有办法处理这个问题吗?

3 个答案:

答案 0 :(得分:10)

创建预览图层时:

captureVideoPreviewLayer.orientation = UIInterfaceOrientationLandscapeLeft;

管理轮换的方法:

-(void)willAnimateRotationToInterfaceOrientation:
        (UIInterfaceOrientation)toInterfaceOrientation 
        duration:(NSTimeInterval)duration {

  [CATransaction begin];
  if (toInterfaceOrientation==UIInterfaceOrientationLandscapeLeft){
    captureVideoPreviewLayer.orientation = UIInterfaceOrientationLandscapeLeft;
  } else {        
    captureVideoPreviewLayer.orientation = UIInterfaceOrientationLandscapeLeft;
  }

 [CATransaction commit];
 [super willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration];
}

-(BOOL)shouldAutorotateToInterfaceOrientation:
        (UIInterfaceOrientation)interfaceOrientation {

  [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeLeft animated:NO];

  return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
}

这对我有用。

答案 1 :(得分:0)

您是否正在使用预览图层的方向和重力设置?

previewLayer = [AVCaptureVideoPreviewLayer layerWithSession:session];
previewLayer.frame = CGRectMake(0, 0, 480, 300); 
previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
previewLayer.orientation =  AVCaptureVideoOrientationLandscapeRight;
previewLayer.automaticallyAdjustsMirroring = YES;

答案 2 :(得分:0)

声明

- (BOOL)shouldAutorotate;

在你的.h。

然后做:

- (BOOL)shouldAutorotate {
    return NO;
}
你的.m

中的

这会强制它不旋转。