2016-11-16 168 views
0

我想錄制在glsurfaceview android上。在android上使用mediaRecorder啓動失敗錯誤

private GLSurfaceView glview; 
private Button start; 
private Button stop; 
private MediaRecorder mediaRecorder; 
@Override 
public void onClick(View v) { 
    if (v == start) { 
     mediaRecorder = new MediaRecorder(); 
     mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); 
     mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
     mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264); 
     mediaRecorder.setVideoSize(176, 144); 
     mediaRecorder.setVideoFrameRate(20); 
     mediaRecorder.setPreviewDisplay(glview.getHolder().getSurface()); 
     mediaRecorder.setOutputFile("/sdcard/test001111.mp4"); 

     try { 
      mediaRecorder.prepare(); 
      mediaRecorder.start(); //occur exception 
     } catch (IllegalStateException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

     if (v == stop) { 
      if (mediaRecorder != null) { 
       mediaRecorder.stop(); 
       mediaRecorder.release(); 
       mediaRecorder = null; 
      } 
     } 
    } 
} 

我嘗試搜索,但只能在surfaceview示例上進行記錄。

我想GLSurfaceView當我點擊開始按鈕

,發生異常。

和我的logcat

java.lang.RuntimeException: start failed. 
    at android.media.MediaRecorder.native_start(Native Method) 
    at android.media.MediaRecorder.start(MediaRecorder.java:726) 
    at com.example.unno.mywebrtc.MainActivity$TestVideoListener.onClick(MainActivity.java:134) 
    at android.view.View.performClick(View.java:4101) 
    at android.view.View$PerformClick.run(View.java:17080) 
    at android.os.Handler.handleCallback(Handler.java:615) 
    at android.os.Handler.dispatchMessage(Handler.java:92) 
    at android.os.Looper.loop(Looper.java:137) 
    at android.app.ActivityThread.main(ActivityThread.java:4863) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:511) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557) 
    at dalvik.system.NativeStart.main(Native Method) 

如何記錄上glsurfaceview?

謝謝。

@Update

清單

<uses-feature android:name="android.hardware.camera" /> 
<uses-feature android:name="android.hardware.camera.autofocus" /> 
<uses-feature android:glEsVersion="0x00020000" android:required="true" /> 

<uses-permission android:name="android.permission.CAMERA" /> 
<uses-permission android:name="android.permission.RECORD_AUDIO" /> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
+0

參考http://stackoverflow.com/questions/17813614/using-android-mediarecorder – sasikumar

回答

1

檢查清單文件是否已給予適當的權限

+0

對不起,我更新我的清單謝謝。 – chohyunwook