gpt4 book ai didi

android - 使用 Camera2 API 的低 FPS

转载 作者:行者123 更新时间:2023-12-04 12:52:08 28 4
gpt4 key购买 nike

我在使用新的 camera2 api 时遇到了低 FPS 速率。具体来说,
尽管选择了最高的 FPS 范围 (30,30)

characteristics.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES);

并将其设置为
mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE, bestFPSRange);

在我测试过的两台设备(三星 S5 和 Xperia Z3 Compact)上,我获得的高图像分辨率的平均速率要低得多。这是我如何设置 OnImageAvailableListener :
int format = ImageFormat.YUV_420_888;
Size largest = map.getOutputSizes(format)[0];
Log.d("Images", "sizes: " + Arrays.toString(map.getOutputSizes(format)));
mImageReader = ImageReader.newInstance(largest.getWidth(), largest.getHeight(), format,
/* maxImages */50);
mImageReader.setOnImageAvailableListener(new OnImageAvailableListener() {

private int frames = 0;
private long initialTime = SystemClock.elapsedRealtimeNanos();

@Override
public void onImageAvailable(ImageReader reader) {
reader.acquireLatestImage().close();
frames++;
if ((frames % 30) == 0) {
long currentTime = SystemClock.elapsedRealtimeNanos();
long fps = Math.round(frames * 1e9 / (currentTime - initialTime));
Log.d("Image", "frame# : " + frames + ", approximately " + fps + " fps");
frames = 0;
initialTime = SystemClock.elapsedRealtimeNanos();
}
}
}, mBackgroundHandler);

基本上,上面的 if 语句每 30 个样本取平均 FPS。实际上,在两种设备上的最高分辨率 (1920x1080) 下,我看到的 fps 范围为 15-20 fps。然而,网上的其他人似乎表明,无论分辨率如何,30fps 都应该是可能的,事实上,使用旧的不推荐使用的相机 API,我可以在两台设备上以最高分辨率获得 30fps。那么我错过了什么?

我已经尝试了 TEMPLATE(例如 TEMPLATE_PREVIEW)和格式(例如 ImageFormat.YUV_420_888)的所有组合。我忘了扭哪个旋钮?

最佳答案

S5 和 Z3 Compact 被归类为 LEGACY 设备。我在其他 LEGACY 设备上测试了这段代码,包括

三星盖乐世 S5

Xperia Z3 Compact

宏达电一 M9

华为伴侣 S

它们都在 1080p 时返回了低帧速率(大约 15fps)。我发现的其中一部手机 LG G4 支持 FULL 配置文件。在该设备上,即使是高帧尺寸,我也能获得 30fps。所以我强烈怀疑camera2 api的包装器中有导致这个问题的开销。

关于android - 使用 Camera2 API 的低 FPS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41945407/

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