當遇到這類問題,首先去看logcat,如果在里面任然找不到錯誤提示信息,可以先調試,如果調試oncreate后就報錯,則去試着去修改下MediaRecorder的參數設置,很多時候是由於不同的硬件的參數不同,下面有一個特別注意的地方,就是設置mediarecorder的音頻和視頻參數順序,像如下我之前做過的順序1不行,順序2可以(本人才疏學淺,不知道具體原因,有哪位大蝦知道,請留言指教)
順序一:
recorder = new MediaRecorder();
recorder.reset();
//設置錄制音頻參數
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);//設置聲源
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);//設置音頻編碼為amr_nb
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);//設置音頻輸出格式為3gp
File file = new File(Environment.getExternalStorageDirectory(),System.currentTimeMillis()+".3gp");
//設置錄制視頻參數
recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);//設置視頻源
recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263);//錄制視頻編碼
recorder.setVideoSize(1280, 720);//設置錄制視頻尺寸
recorder.setVideoFrameRate(30);//每秒3幀
recorder.setOutputFile(file.getAbsolutePath());//設置視頻輸出文件路徑
recorder.setPreviewDisplay(sh.getSurface());//設置視頻錄制內容是從surfaceholder推送到surfaceview里面顯示
順序二:
recorder = new MediaRecorder();
recorder.reset();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);//設置聲源
recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);//設置視頻源
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);//設置音頻輸出格式為3gp
recorder.setVideoSize(1280, 720);//設置錄制視頻尺寸
recorder.setVideoFrameRate(30);//每秒3幀
recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263);//錄制視頻編碼
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);//設置音頻編碼為amr_nb
File file = new File(Environment.getExternalStorageDirectory(),System.currentTimeMillis()+".3gp");
recorder.setOutputFile(file.getAbsolutePath());//設置視頻輸出文件路徑
recorder.setPreviewDisplay(sh.getSurface());//設置視頻錄制內容是從surfaceholder推送到surfaceview里面顯示