android:视频录制编写代码一直报非法状态错误,很多时候定位在setVideoEncoder和setAudioEncoder
2015-03-26 09:42
288 查看
当遇到这类问题,首先去看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里面显示
顺序一:
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里面显示
相关文章推荐
- Android录制视频报错setVideoSize called in a invalid state 1
- Android在MediaMuxer和MediaCodec录制视频示例 - audio+video
- Android录制视频报错setVideoSize called in a invalid state 1
- Android使用百度地图开发时,出现定位无反应。log里出现162错误代码
- android录制音频的时,报错setAudioSource failed.
- 使用Android编写录制视频小程序示例
- Android使用react-native-video 播放视频一直重复播放的解决方法
- 《rk1108的video视频录制代码架构分析》
- Android 视频录制工具类VideoRecordUtil
- 编写测试代码时候的小错误——takes 0 positional arguments but 1 was given
- Android VideoView状态跟踪和错误处理
- android VideoView播放完视频一直黑屏的问题
- android中使用setVideoURI()播放视频
- android基础代码实例:录制视频
- 使用Android编写录制视频小程序演示样例
- Android录制视频---LandscapeVideoCamera的使用详情及修改
- Android 录音,加权限还有错误:java.lang.RuntimeException: setAudioSource failed. onCallStateChanged获取不到来电号码
- H5API-SVG、地理定位、多媒体(video、audio)、视频插件、拖放
- 用LoadRunner来录制的时候刚开始就出现了“Explore.exe 应用程序错误"一直找不到解答的方法?
- 关于repo下载android代码时候错误的处理。