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


  • 相关阅读:
    sql server 中各个系统表的作用==== (转载)
    后台动态设置前台标签内容和属性
    利用C#编写一个简单的抓网页应用程序
    如何创建和使用Web Service代理类
    jdbc如何取得存储过程return返回值
    子窗口和父窗口的函数或对象能否相互访问 (转载)
    把aspx文件编译成DLL文件
    C#中的类型转换
    c#中对文件的操作小结
    转贴一篇 自定义数据库 希望对你有帮助
  • 原文地址:https://www.cnblogs.com/llguanli/p/8454884.html
Copyright © 2011-2022 走看看