【发布时间】:2013-01-18 20:31:33
【问题描述】:
我有两个不同的代码库有同样的问题。
第一个是直接从 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 相比,它有点混乱,更不用说一些看起来很吓人的参数不兼容问题以及碎片化设备环境中的不同分辨率。
假设我可以让它在我的 JB 设备上运行,有没有人根据经验知道 API 15 ICS 是否解决了大多数这些问题?
如果 API 10 Gingerbread 太难支持,我会考虑不支持它。
【问题讨论】:
标签: android video camera android-camera mediarecorder