7

我只是设置了一个非常基本的相机预览,可以全屏显示相机。我比较了我的应用程序和安卓相机的流畅度,发现安卓相机看起来更流畅。

为什么会这样?有没有什么特别的技巧可以提高相机预览性能?

4

2 回答 2

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您要允许的最大高度在哪里。

于 2013-09-18T22:48:56.167 回答
2

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

我不仅无法匹配库存相机的“平滑度”,而且我也无法匹配库存相机的测光。与普通相机相比,我的实时预览要暗得多,尤其是在光线不足的情况下。

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

Nexus 5 上的默认预览 FPS 是静态 15 FPS。股票 android 应用程序检测并设置使用动态范围的预览 FPS(只要该范围包括 30fps)。在 nexus 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);
}
于 2014-10-11T06:03:32.687 回答