Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 尝试设置SetVideoFrameRate时发生xamarin错误_C#_Android_Xamarin_Xamarin.android_Mediarecorder - Fatal编程技术网

C# 尝试设置SetVideoFrameRate时发生xamarin错误

C# 尝试设置SetVideoFrameRate时发生xamarin错误,c#,android,xamarin,xamarin.android,mediarecorder,C#,Android,Xamarin,Xamarin.android,Mediarecorder,我正在研究xamarin。我正在使用MediaRecorder,我只想设置帧速率,但当我设置它时recorder.SetVideoFrameRate(30)我得到错误的 Java.Lang.IllegalStateException: 我不确定是否it设备无法处理它,或者是否有某种方法可以让它工作。我只是使用简单的MediaRecorder MediaRecorder recorder; video.StopPlayback(); recorder = new MediaRecorder()

我正在研究xamarin。我正在使用MediaRecorder,我只想设置帧速率,但当我设置它时
recorder.SetVideoFrameRate(30)我得到错误的

Java.Lang.IllegalStateException:

我不确定是否it设备无法处理它,或者是否有某种方法可以让它工作。我只是使用简单的MediaRecorder

MediaRecorder recorder;

video.StopPlayback();

recorder = new MediaRecorder();
//--
recorder.SetVideoFrameRate(30);
// recorder.SetCaptureRate(150);
recorder.SetVideoSource(VideoSource.Camera);
recorder.SetAudioSource(AudioSource.Mic);
recorder.SetOutputFormat(OutputFormat.Default);
recorder.SetVideoEncoder(VideoEncoder.Default);
recorder.SetAudioEncoder(AudioEncoder.Default);
recorder.SetOutputFile(path);
recorder.SetPreviewDisplay(video.Holder.Surface);
recorder.Prepare();
recorder.Start();

您不能在
SetOutputFormat
之前调用
SetVideoFramerate
。将该方法调用移动到
SetOutputFormat
下,它就会工作

recorder = new MediaRecorder();
recorder.SetVideoSource(VideoSource.Camera);
recorder.SetAudioSource(AudioSource.Mic);
recorder.SetOutputFormat(OutputFormat.Default);
recorder.SetVideoFrameRate(30); // Move it here
Android实际上有一个很好的文档,告诉您每个方法可以抛出哪些异常。这是一段引自:

投掷

如果在prepare()之后或setOutputFormat()之前调用,则为IllegalStateException。注意:在某些具有自动帧速率的设备上,这将设置最大帧速率,而不是恒定帧速率。实际帧速率将根据照明条件而变化


你知道如何设置相机的曝光或焦距吗lens@oisin1min这是您正在寻找的,但现在已被弃用。文档中提到您现在应该使用,但我没有任何使用经验。谢谢。你太棒了。你知道我在哪里可以找到android的例子吗