媒体录制器准备失败。

3

我是新来的。我一直在尝试使用Android模拟器创建视频捕获应用程序,但并没有太大的成功。据我所知,在互联网上查找所有示例和代码(包括此站点和其他站点)后,我必须仍然缺少一步。

我尝试使用JonPro在此线程末尾创建的示例:

http://www.anddev.org/viewtopic.php?p=24723#24723

我也尝试过自己制作,但媒体记录器总是在准备阶段失败,并显示最无用的消息“准备失败”。我不知道我错过了什么。根据模拟器,我似乎有正确的权限和SD卡已挂载。我应该使用其他版本的Android SDK吗?

即使那个论坛中的代码声称可以工作,我发现这行代码是缺失的: recorder.setCamera(camera);

但仍然没有喜悦,因为日志显示:

'Failed to get camera(0x16b70) parameters'

当调用prepare()时,但它仍然没有意义,因为预览很好,但没有录制!任何帮助或建议将不胜感激。

编辑:有人能确认这可以适用于SDK和模拟器吗?或者我是在浪费时间尝试让它在这个版本中工作。我能否获取prepare函数的源代码,因为它是开源的?


1
我已经尝试了很长时间录制视频,但一直没有成功。作为解决方案,我使用了MediaStore.ACTION_CAPTURE_VIDEO意图来启动内置应用程序以记录并返回视频。 - molnarm
2个回答

5

解决这个问题的方法是在prepare之前设置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 P.N


prepare 之前和 setPreviewDisplay 之后,摄像头必须被解锁。 - Jomoos
“在mCameraDevice.setPreviewDisplay(mHolder)之后设置这个非常重要”,这个陈述是错误的。 - user2587965

0
recorder.setVideoSize(176, 144);
recorder.setVideoFrameRate(20);
recorder.setAudioChannels(1);
recorder.setPreviewDisplay( mHolder.getSurface());

这对我很有帮助。在调试期间查看logcat


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接