尝试设置SetVideoFrameRate时出现xamarin错误

时间:2017-03-16 19:50:58

标签: c# android xamarin xamarin.android mediarecorder

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

  

Java.Lang.IllegalStateException:

我不确定它是否无法处理它或是否有某种方式让它工作。我只是使用简单的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();

1 个答案:

答案 0 :(得分:1)

您无法在SetVideoFramerate之前致电SetOutputFormat。在SetOutputFormat下移动该方法调用,它将起作用。

recorder = new MediaRecorder();
recorder.SetVideoSource(VideoSource.Camera);
recorder.SetAudioSource(AudioSource.Mic);
recorder.SetOutputFormat(OutputFormat.Default);
recorder.SetVideoFrameRate(30); // Move it here

Android实际上有一个很好的文档,告诉你每个方法可以抛出什么异常。这是MediaRecorder's page

的引用
  

<强>抛出

     

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