0

我有一个 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);
});
4

1 回答 1

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
}

注意:从这里粘贴的描述请查看帖子以获取更多详细信息

2.这篇文章将帮助您改变视频方向

于 2012-08-21T12:11:30.767 回答