码迷,mamicode.com
首页 > 其他好文 > 详细

setOutputFormat called in an invalid state: 1

时间:2018-02-20 11:16:32      阅读:571      评论:0      收藏:0      [点我收藏+]

标签:tee   代码   print   todo   recorder   dev   splay   技术   orm   

在编写一个简单的录像应用程序的时候,爆出例如以下异常:

E MediaRecorder: setOutputFormat called in an invalid state: 1
E AndroidRuntime: java.lang.IllegalStateException
E AndroidRuntime: at android.media.MediaRecorder.setOutputFormat(Native Method)


由于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();
		}


setOutputFormat called in an invalid state: 1

标签:tee   代码   print   todo   recorder   dev   splay   技术   orm   

原文地址:https://www.cnblogs.com/llguanli/p/8454884.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!