Error处理( android.media.MediaRecorder.start(Native Method) 报错:start failed: -19)

枕上从妨一夜睡,灯前读尽十年诗。这篇文章主要讲述Error处理: android.media.MediaRecorder.start(Native Method) 报错:start failed: -19相关的知识,希望能为你提供帮助。
本文转载自:http://blog.csdn.net/netwalk/article/details/17686993
Error处理: android.media.MediaRecorder.start(Native Method) 报错:start failed: -19
spydroid-android测试在android4.0系统上报错
[html]  view plain  copy  

  1. start  failed:  -19   

而且也发现,在使用MediaRecorder进行视频录制,调用start()方法时报错,发生spydroid-android测试在android4.0系统上同样的错误,具体错误如下:
 
[html]  view plain  copy  
  1. 01-06  14:04:07.790:  V/MediaRecorder(13280):  prepare   
  2. 01-06  14:04:07.790:  V/IMediaRecorder(13280):  prepare   
  3. 01-06  14:04:07.800:  V/MediaRecorder(13280):  start   
  4. 01-06  14:04:07.800:  V/IMediaRecorder(13280):  start   
  5. 01-06  14:04:08.190:  E/MediaRecorder(13280):  start  failed:  -19   
  6. 01-06  14:04:08.190:  W/System.err(13280):  java.lang.RuntimeException:  start  failed.   
  7. 01-06  14:04:08.200:  W/System.err(13280):        at  android.media.MediaRecorder.start(Native  Method)   
  8. 01-06  14:04:08.200:  W/System.err(13280):        at  com.yousee.videocapturedemo.VideoCapturePlus$2.onClick(VideoCapturePlus.java:145)   
  9. 01-06  14:04:08.200:  W/System.err(13280):        at  android.view.View.performClick(View.java:3515)   
  10. 01-06  14:04:08.200:  W/System.err(13280):        at  android.view.View$PerformClick.run(View.java:14144)   
  11. 01-06  14:04:08.200:  W/System.err(13280):        at  android.os.Handler.handleCallback(Handler.java:605)   
  12. 01-06  14:04:08.200:  W/System.err(13280):        at  android.os.Handler.dispatchMessage(Handler.java:92)   
  13. 01-06  14:04:08.200:  W/System.err(13280):        at  android.os.Looper.loop(Looper.java:148)   
  14. 01-06  14:04:08.200:  W/System.err(13280):        at  android.app.ActivityThread.main(ActivityThread.java:4503)   
  15. 01-06  14:04:08.200:  W/System.err(13280):        at  java.lang.reflect.Method.invokeNative(Native  Method)   
  16. 01-06  14:04:08.200:  W/System.err(13280):        at  java.lang.reflect.Method.invoke(Method.java:511)   
  17. 01-06  14:04:08.200:  W/System.err(13280):        at  com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:830)   
  18. 01-06  14:04:08.200:  W/System.err(13280):        at  com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)   
  19. 01-06  14:04:08.200:  W/System.err(13280):        at  dalvik.system.NativeStart.main(Native  Method)   


 
 
 
MediaRecorder 初始化和设置代码如下: 
 
[java]  view plain  copy  
  1.       .....   
  2.               mMediaRecorder=new  MediaRecorder();        
  3.               //设置视频源       
  4.               mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);        
  5.               //设置音频源       
  6.               mMediaRecorder.setAudiosource(MediaRecorder.AudioSource.DEFAULT);        
  7.               //设置文件输出格式       
  8.               mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);        
  9.               //设置视频编码方式       
  10.               mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);        
  11.               //设置音频编码方式       
  12.               mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);        
  13.               //设置视频高和宽,注意文档的说明:       
  14.               //Must  be  called  after  setVideoSource().       
  15.               //Call  this  after  setOutFormat()  but  before  prepare().       
  16.               //设置录制的视频帧率,注意文档的说明:       
  17.               //Must  be  called  after  setVideoSource().       
  18.               //Call  this  after  setOutFormat()  but  before  prepare().       
  19.               mMediaRecorder.setVideoFrameRate(20);        
  20.               //设置预览画面       
  21.               mMediaRecorder.setPreviewDisplay(mSurfaceHolder.getSurface());        
  22.               //设置输出路径       
  23.               mMediaRecorder.setOutputFile       
  24.               (Environment.getExternalStorageDirectory()+File.separator+System.currentTimeMillis()+".mp4");        
  25. .....   
  26. mediaRecorder.prepare();    
  27. mediaRecorder.start();    
  28. .....   
[java]  view plain  copy  
  1.    
 
相同的程序在Android2.3平台上正常运行,在Android4.0上报错。
【Error处理( android.media.MediaRecorder.start(Native Method) 报错:start failed: -19)】解决方法:
注释掉设置视频帧率的语句。//mMediaRecorder.setVideoFrameRate(mQuality.framerate);
 
将setVideoFrameRate去掉之后,如果还出现该错误,可将
mMediaRecorder.setVideoSize(videoWidth, videoHeight); 也注释掉
原因:
      视频的帧率和视频大小是需要硬件支持的,如果设置的帧率和视频大小,如果硬件不支持就会出现错误。
参考:
          http://stackoverflow.com/questions/11249642/mediarecorder-start-failed-19
 

    推荐阅读