MediaRecorder start failed -19 java.lang.RuntimeException: start failed

傲慢的上校發表於2013-06-14

          使用MediaRecorder錄製視訊的時候,

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和聯想的某些機型上面會出現如題錯誤。

修改為以下,註釋掉三行程式碼:

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()方法。否則,可能出錯。


相關文章