因为code是完全按照google的Demo写的,觉得比较奇怪。看描述是说setOutputFormat的时候,状态应该错乱了, 最后又看了一下google文档,原因在于google对于设定MediaRecorder是有要求的,写代码的时候应该完全按照人 家要求的设定顺序来写,具体如下: mCamera.unlock(); mProfile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH); //1st. Initial state mMediaRecorder = new MediaRecorder(); mMediaRecorder.setCamera(mCamera); //2st. Initialized state mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER); mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); //3st. config mMediaRecorder.setOutputFormat(mProfile.fileFormat); mMediaRecorder.setAudioEncoder(mProfile.audioCodec); mMediaRecorder.setVideoEncoder(mProfile.videoCodec); mMediaRecorder.setOutputFile("/sdcard/FBVideo.3gp"); mMediaRecorder.setVideoSize(mProfile.videoFrameWidth, mProfile.videoFrameHeight); mMediaRecorder.setVideoFrameRate(mProfile.videoFrameRate); mMediaRecorder.setVideoEncodingBitRate(mProfile.videoBitRate); mMediaRecorder.setAudioEncodingBitRate(mProfile.audioBitRate); mMediaRecorder.setAudioChannels(mProfile.audioChannels); mMediaRecorder.setAudioSamplingRate(mProfile.audioSampleRate); mMediaRecorder.setPreviewDisplay(mHolder.getSurface()); try { mMediaRecorder.prepare(); mMediaRecorder.start(); } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
android 录音时报 MediaRecorder: setOutputFile called in an invalid state(1)
最新推荐文章于 2023-04-06 13:59:29 发布