代码之家  ›  专栏  ›  技术社区  ›  AndyTang

MediaRecorder准备失败

  •  2
  • AndyTang  · 技术社区  · 15 年前

    我是新来的。我一直在尝试使用android模拟器创建一个视频捕获应用程序,但没有多少成功。据我所知,并通过互联网(这个网站和其他网站)上的所有样本和代码,我一定还错过了一步。

    我试过在jonpro制作的这个线程的末尾使用这个示例: http://www.anddev.org/viewtopic.php?p=24723#24723

    我也试过自己做,但媒体录音机在准备阶段总是会失败,最没有帮助的信息是“准备失败”。我不知道我错过了什么。我似乎拥有正确的权限,并且根据模拟器安装了sdcard。我应该使用2.1以外的android sdk版本吗?

    尽管那个论坛里的代码声称有效,但我还是发现这一行不见了: 摄像机;

    但仍然没有快乐,因为日志显示: '无法获取相机(0x16B70)参数' 调用prepare()时仍然没有意义,因为预览可以,但没有录制!任何帮助或建议将不胜感激。

    编辑:有人能确认这对sdk和模拟器有效吗?或者我是在浪费我的时间试图让这个在这个版本工作。我能得到prepare函数的源代码吗?

    2 回复  |  直到 13 年前
        1
  •  5
  •   P.N    15 年前

    解决此问题的方法是在准备之前必须设置mcameradevice.unlock()。在mcameradevice.setpreviewdisplay(mholder)之后设置这一点很重要;

    例子:

    /*--------------------------------------surfaceCreated---------------------------------------------*/
    /**
     * Surface Created sets that the surface is created.
     */
     public void surfaceCreated(SurfaceHolder arg0) {
         // TODO Auto-generated method stu1595
            try {
                Log.d(LOG_TAG, "setPreviewDisplay enter");
                mCameraDevice.setPreviewDisplay(mHolder);
                Log.d(LOG_TAG, "setPreviewDisplay exit");
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
            mCameraDevice.unlock();
            Log.d("*************", "***********unlock()****");
         isSurfaceCreated = true;
    
    
     }
    

    溴 P.N

        2
  •  0
  •   Cody Gray    14 年前
    recorder.setVideoSize(176, 144);
    recorder.setVideoFrameRate(20);
    recorder.setAudioChannels(1);
    recorder.setPreviewDisplay( mHolder.getSurface());
    

    这对我有帮助。调试期间在logcat中查找