当遇到这类问题,首先去看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里面显示