【问题标题】:MediaRecorder Prepare FailedMediaRecorder 准备失败
【发布时间】:2011-08-12 17:10:14
【问题描述】:

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

我已经尝试在 JonPro 制作的这个线程的末尾附近使用这个示例: http://www.anddev.org/viewtopic.php?p=24723#24723

我也尝试过自己制作,但媒体记录器在准备阶段总是会失败,并显示最无益的“准备失败”消息。我不知道我错过了什么。我似乎拥有正确的权限,并且根据模拟器安装了 SDCard。我应该使用 2.1 以外的 Android SDK 版本吗?

尽管该论坛中的代码声称可以工作,但我发现缺少这一行: recorder.setCamera(相机);

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

编辑:任何人都可以确认这适用于 SDK 和模拟器吗?或者我在浪费时间试图让它在这个版本中工作。因为它是开源的,所以我可以获得准备函数的源代码吗?

【问题讨论】:

  • 我已经尝试录制视频很长时间没有成功。作为一种解决方案,我使用 MediaStore.ACTION_CAPTURE_VIDEO 意图启动内置应用程序来录制和返回视频。

标签: android mediarecorder


【解决方案1】:

解决此问题的方法是在准备之前必须设置 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;


 }

BR 编号

【讨论】:

  • +1 表示相机必须在prepare之前和setPreviewDisplay之后解锁
  • "重要的是这个设置在mCameraDevice.setPreviewDisplay(mHolder)之后",这个说法是错误的
【解决方案2】:
recorder.setVideoSize(176, 144);
recorder.setVideoFrameRate(20);
recorder.setAudioChannels(1);
recorder.setPreviewDisplay( mHolder.getSurface());

这对我有帮助。调试时查看logcat

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-30
    • 1970-01-01
    相关资源
    最近更新 更多