视频定位iPhone

时间:2012-08-21 12:01:10

标签: iphone video xamarin.ios orientation video-capture

我有一个iPhone应用程序,女巫可以录制视频。问题是方向,它始终是纵向的。 我需要它来检测设备方向,然后以正确的方向保存视频。

// setup video recording
mRecordingDelegate = new RecordingDelegate();

// setup the input Video part
mCaptureVideoInput = new AVCaptureDeviceInput(AVCaptureDevice.DefaultDeviceWithMediaType(AVMediaType.Video), out mVideoError);

//Audio part
mCaptureAudioInput = new AVCaptureDeviceInput(AVCaptureDevice.DefaultDeviceWithMediaType(AVMediaType.Audio), out mAudioError);

// setup the capture session
mCaptureSession = new AVCaptureSession();
mCaptureSession.SessionPreset = AVCaptureSession.PresetMedium;
mCaptureSession.AddInput(mCaptureVideoInput);
mCaptureSession.AddInput(mCaptureAudioInput);

// setup the output
mCaptureOutput = new AVCaptureMovieFileOutput();
mCaptureOutput.MaxRecordedDuration = MonoTouch.CoreMedia.CMTime.FromSeconds(VideoLength, 1);

//add Output to session
mCaptureSession.AddOutput(mCaptureOutput);

// add preview layer 
mPrevLayer = new AVCaptureVideoPreviewLayer(mCaptureSession);
mPrevLayer.Frame = new RectangleF(0, 0, 320, 480);
mPrevLayer.BackgroundColor = UIColor.Clear.CGColor;
mPrevLayer.VideoGravity = "AVLayerVideoGravityResize";

// Show video output
mCaptureSession.CommitConfiguration();
mCaptureSession.StartRunning();

RecordingDelegate.Stopped += delegate {
    if(recording)
        OnBtnStopRecordingVideo();
};

// add subviews
this.InvokeOnMainThread (delegate
{
    this.View.Layer.AddSublayer (mPrevLayer);
});

1 个答案:

答案 0 :(得分:1)

<强> 1。基础知识

在我们深入了解细节之前,让我们先回顾一下界面方向变化的工作原理以及如何应对它们。首先,如果您希望视图自动旋转,则需要覆盖方法shouldAutorotateToInterfaceOrientation:并返回YES。如果您只想在某种条件下允许自动旋转,您也可以在此方法中对此条件进行测试。

这是允许自动旋转所需要做的最基本的事情,但是可以覆盖的其他方法非常有用。这些方法是

  

willRotateToInterfaceOrientation

     

didRotateFromInterfaceOrientation

     

willAnimateFirstHalfOfRotationToInterfaceOrientation

     

willAnimateSecondHalfOfRotationFromInterfaceOrientation

前两种方法对于旋转的前后处理非常有用。您也许可以在willRotateToInterfaceOrientation中初始化视图控制器或向当前视图添加一些视图。第二个2非常自我解释。如果要在旋转的特定阶段执行其他操作,也可以实现它们。

使用视图控制器方向时,另一个非常有用的代码示例是:

if(UIInterfaceOrientationIsLandscape(interfaceOrientation)){

    //do some processing…

}else if(UIInterfaceOrientationIsPortrait(interfaceOrientation)){

    //do different processing…
}
else if(UIDeviceOrientationIsValidInterfaceOrientation(interfaceOrientation)){

    //do something
}

注意:here粘贴的说明请查看帖子了解详情

<强> 2。此post将帮助您更改视频方向