MediaRecorder start failed java.lang.RuntimeException: start failed

          使用MediaRecorder录制视频的时候,

[java] view plain copy
print ?
  1. mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);    
  2.         mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);    
  3.         mMediaRecorder.setVideoFrameRate(20);    
  4.         mMediaRecorder.setVideoSize(352288);    
  5.         mMediaRecorder.setVideoEncoder(mVideoEncoder);    
  6.         mMediaRecorder.setPreviewDisplay(mSurfaceHolder.getSurface());    
  7.         mMediaRecorder.setMaxDuration(0);    
  8.         mMediaRecorder.setMaxFileSize(0);    
  9.         mMediaRecorder.setOutputFile(sender.getFileDescriptor());    
  10.         try {    
  11.             mMediaRecorder.setOnInfoListener(this);    
  12.             mMediaRecorder.setOnErrorListener(this);    
  13.             mMediaRecorder.prepare();    
  14.             mMediaRecorder.start();   
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);  
        mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);  
        mMediaRecorder.setVideoFrameRate(20);  
        mMediaRecorder.setVideoSize(352, 288);  
        mMediaRecorder.setVideoEncoder(mVideoEncoder);  
        mMediaRecorder.setPreviewDisplay(mSurfaceHolder.getSurface());  
        mMediaRecorder.setMaxDuration(0);  
        mMediaRecorder.setMaxFileSize(0);  
        mMediaRecorder.setOutputFile(sender.getFileDescriptor());  
        try {  
            mMediaRecorder.setOnInfoListener(this);  
            mMediaRecorder.setOnErrorListener(this);  
            mMediaRecorder.prepare();  
            mMediaRecorder.start(); 

出现如题错误:注意,这段代码在小米上面可以跑通,在Htc和联想的某些机型上面会出现如题错误。

修改为以下,注释掉三行代码:

[java] view plain copy
print ?
  1. mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);    
  2.         mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);    
  3. //        mMediaRecorder.setVideoFrameRate(20);    
  4. //        mMediaRecorder.setVideoSize(352, 288);    
  5.         mMediaRecorder.setVideoEncoder(mVideoEncoder);    
  6.         mMediaRecorder.setPreviewDisplay(mSurfaceHolder.getSurface());    
  7.         mMediaRecorder.setMaxDuration(0);    
  8. //        mMediaRecorder.setMaxFileSize(0);    
  9.         mMediaRecorder.setOutputFile(sender.getFileDescriptor());    
  10.         try {    
  11.             mMediaRecorder.setOnInfoListener(this);    
  12.             mMediaRecorder.setOnErrorListener(this);    
  13.             mMediaRecorder.prepare();    
  14.             mMediaRecorder.start();    
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);  
        mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);  
//        mMediaRecorder.setVideoFrameRate(20);  
//        mMediaRecorder.setVideoSize(352, 288);  
        mMediaRecorder.setVideoEncoder(mVideoEncoder);  
        mMediaRecorder.setPreviewDisplay(mSurfaceHolder.getSurface());  
        mMediaRecorder.setMaxDuration(0);  
//        mMediaRecorder.setMaxFileSize(0);  
        mMediaRecorder.setOutputFile(sender.getFileDescriptor());  
        try {  
            mMediaRecorder.setOnInfoListener(this);  
            mMediaRecorder.setOnErrorListener(this);  
            mMediaRecorder.prepare();  
            mMediaRecorder.start();  

即可。


在StackOverFlow上面,也有很多这样的问题,如果这种方案不能解决,建议在上面找找其他。


  如果使用setCamera()方法,前面要调用camera.unLock()方法。否则,可能出错。

转载:http://blog.csdn.net/lilu_leo/article/details/9097471

你可能感兴趣的:(MediaRecorder start failed java.lang.RuntimeException: start failed)