2017-03-16 77 views
0

我正在使用xamarin。我使用MediaRecorder,我只是想設置的幀速率,但是當我把它recorder.SetVideoFrameRate(30);我得到嘗試設置時xamarin錯誤SetVideoFrameRate

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

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實際上有一個很棒的文檔,告訴你每種方法可以拋出什麼異常。這是從MediaRecorder's page報價:

拋出()setOutputFormat()之前

IllegalStateException異常,如果它被稱爲準備後,或。注意:在某些具有自動幀速率的設備上,這會設置最大幀速率,而不是固定幀速率。實際幀速率將根據照明條件而變化。

+0

感謝你的幫助:) – oisin1min

+0

你會知道的任何事情有關設置相機的曝光或鏡頭 – oisin1min

+0

的焦距@ oisin1min [Camera.Parameters](https://developer.android.com/ reference/android/hardware/Camera.Parameters.html)是你正在尋找的東西,但現在已經被棄用了。文檔提到你現在應該使用[android.hardware.camera2 API](https://developer.android.com/reference/android/hardware/camera2/package-summary.html),但我沒有任何經驗它。 – hankide

相關問題