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


  • 相关阅读:
    C#类中的字段、属性和方法
    Linux下制作Windows启动U盘的工具
    将samba共享目录映射为本地文件夹(百度网盘直接下载到samba共享目录下)
    《怎样编写研究报告》读书笔记0-0
    mcnp的重复探测器单元计数-fmesh卡的介绍
    单能X射线产生方法
    matlab学习之降噪平滑算法
    matlab学习之求解函数的根和极小值
    matlab学习之绘制参数曲线,添加辅助线以及颜色设置
    MC资源整理
  • 原文地址:https://www.cnblogs.com/llguanli/p/8454884.html
Copyright © 2011-2022 走看看