zoukankan      html  css  js  c++  java
  • setOutputFormat called in an invalid state: 1

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

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


  • 相关阅读:
    JSP根据身份证号码计算生日
    JSP听课笔记(二)
    JSP听课笔记(一)
    JDBC连接数据库过程(转载)
    PL/SQL
    阅读笔记
    javaScript的一些奇妙动画
    原型与原型链之间一些奥秘
    CSS3 @keyframes 规则
    Java语言中的基本词汇
  • 原文地址:https://www.cnblogs.com/llguanli/p/8454884.html
Copyright © 2011-2022 走看看