MediaRecorder的坑
- 首先一些API的调用时有顺序的,否则会报错崩溃
- 权限一定要先运行申请并且允许,再初始化mediaRecorder
- surfaceview是一定需要的,否则录不起
-
private void init() { mediaRecorder = new MediaRecorder(); mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264); mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); mediaRecorder.setVideoSize(480,360); mediaRecorder.setVideoFrameRate(20); mediaRecorder.setPreviewDisplay(surfaceHolder.getSurface()); mediaRecorder.setOutputFile(Environment.getExternalStorageDirectory().getAbsolutePath()+"/DCIM/today.mp4"); }
- setVideoSize 值一定要传对,也就是camera支持的分辨率
- 开始录制
if (mediaRecorder != null){ try { //准备录制 mediaRecorder.prepare(); //开始录制 mediaRecorder.start(); } catch (IOException e) { e.printStackTrace(); } }
- 结束录制
if(mediaRecorder != null){ //停止录制 mediaRecorder.stop(); //释放资源 mediaRecorder.release(); //引用置为空 mediaRecorder = null; }
- 为了录制时有声音,必须加入下面两句,如果不加视频是没有声音的
-
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
-
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
- 当然还需要些权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.CAMERA"/> <uses-permission android:name="android.permission.RECORD_AUDIO"/>
Dana.Lee
To:Dana_Lee1016@126.com