为什么默认的Android摄像头预览比我自己的摄像头预览更平滑?

时间:2013-09-18 21:14:22

标签: android camera android-camera

我只是设置了一个非常基本的相机预览,可以全屏显示相机。我比较了我的应用程序和Android相机的平滑度,并认为Android相机看起来更顺畅。

为什么会这样?是否有任何特殊技巧可以提高相机预览性能?

2 个答案:

答案 0 :(得分:7)

前一段时间我遇到了同样的问题,结果发现它与相机分辨率有关。有可能您的Camera正在使用最大可用分辨率进行初始化,这可能会降低预览期间的性能。尝试使用类似的东西设置较低的picture size .-

Camera.Parameters params = camera.getParameters();
params.setPictureSize(1280, 960);
camera.setParameters(params);

请注意,您需要设置可用的图片大小。您可以使用

检查可用尺寸
camera.getParameters().getSupportedPictureSizes();

希望它有所帮助。

修改

似乎使用不同于默认宽高比的图片尺寸,也会降低性能。这就是我选择pictureSize .-

的方法

首先,我获得相机默认pictureSize

的宽高比
Camera.Parameters params = camera.getParameters();
defaultCameraRatio = (float) params.getPictureSize().width / (float) params.getPictureSize().height;

然后我得到一个符合相同比率的较低pictureSize .-

private Size getPreferredPictureSize() {
    Size res = null;
    List<Size> sizes = camera.getParameters().getSupportedPictureSizes();

    for (Size s : sizes) {
        float ratio = (float) s.width / (float) s.height;
        if (ratio == defaultCameraRatio && s.height <= PHOTO_HEIGHT_THRESHOLD) {
            res = s;
    break;
        }
    }
    return res;
}

PHOTO_HEIGHT_THRESHOLD是您要允许的最大高度。

答案 1 :(得分:2)

这个答案有点晚了,但在遇到同样的问题之后,我想我会分享我找到的东西。

我不仅无法匹配照相机的光滑度#34;而且我也无法匹配照相机的测光。与相机相比,我的实时预览要暗得多,特别是在光线不足的情况下。

我的解决方案最终是一个FPS问题,正如罗宾在早期评论中最初提出的那样。

Nexus 5上的默认预览FPS是静态15 FPS。股票Android应用程序检测并设置使用动态范围的预览FPS(只要该范围包括30fps)。在关联5上,该范围是7fps - > 30fps的。在低光照条件下,相机降至较低的FPS以保持预览明亮,而在明亮的条件下,它会以30 fps的速度跳跃。

来自股票android照片应用的相关代码:

以下是使用特定于Nexus 5的硬编码值(为简单起见)设置FPS 的相机api调用。

public void setFps(Camera camera) {
    Camera.Parameters params = camera.getParameters();
    params.setPreviewFpsRange(7000, 30000);
    Camera.setParameters(params);
}