gpt4 book ai didi

Android 无法使用前置摄像头录制视频,MediaRecorder 启动失败 : -19

转载 作者:IT老高 更新时间:2023-10-28 22:23:53 25 4
gpt4 key购买 nike

我有两个不同的代码库有同样的问题。

第一个是直接从 developer.android.com 复制的代码: http://developer.android.com/guide/topics/media/camera.html#custom-camera

第二个是这段代码:

http://android-er.blogspot.com.au/2011/10/simple-exercise-of-video-capture-using.html

两者都可以正常使用普通的后置摄像头,但是一旦我尝试使用前置摄像头,我就会收到错误。

这发生在以下设备上:

  • Nexus S 4.1.2

  • Galaxy Nexus 4.1.2

  • Nexus 7 4.2.1(只有前置摄像头)

我也尝试过看起来像 2.2 时代的相机参数,有些人声称某些三星和 HTC 设备需要它,尽管多篇不同的文章引用了不同的字符串键:

c = Camera.open(frontFacingCameraID); // attempt to get a Camera instance
Camera.Parameters params = c.getParameters();
params.set("cam-mode", 1);
params.set("cam_mode", 1);
params.set("camera-id", 1);
c.setParameters(params);

这些都不起作用,还请注意,我正在检测正确的前置摄像头 ID,这在 Nexus 7 上当然是:0。但所有设备上的结果都是相同的。

我尝试过使用低质量配置文件,我尝试过以多种方式手动设置视频分辨率、编码器、输出格式、比特率、帧速率和视频大小,但都没有奏效。

让我认为大多数代码没有问题的是普通相机可以正常工作。所以我的猜测是它与设置媒体记录器的 prepareVideoRecorder()/prepareMediaRecorder() 方法有关。

也许是已知可在前置摄像头上使用的媒体记录器手动编码设置?

我不得不说,Android Camera 和 MediaRecorder API 很烂。与 iOS 相比,它有点困惑,更不用说一些看起来很吓人的参数不兼容问题以及 fragment 化设备环境中的不同分辨率。

假设我可以让它在我的 JB 设备上运行,有没有人根据经验知道 API 15 ICS 是否解决了大多数这些问题?

如果 API 10 Gingerbread 太难支持,我会考虑不支持它。

最佳答案

我今天也遇到了这个问题。

首先,确保您的权限设置正确。具体来说,要录制视频,您需要:

<uses-feature android:name="android.hardware.camera.front" />
<uses-feature android:name="android.hardware.microphone"/>

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

其次,这是棘手的部分,教程中的这行代码不适用于前置摄像头!

mMediaRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));

CamcorderProfile.get() 的签名默认为后置摄像头的配置文件:

Returns the camcorder profile for the first back-facing camera on the device at the given quality level. If the device has no back-facing camera, this returns null.

改为使用 http://developer.android.com/reference/android/media/CamcorderProfile.html#get(int,%20int) .第一个参数是你打开的摄像头的id,具体来说就是前置摄像头。

关于Android 无法使用前置摄像头录制视频,MediaRecorder 启动失败 : -19,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14681703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com