从camera2预览中执行实时逐帧分析

问题描述 投票:0回答:1

我正在开发 Android 应用程序,在其中我需要在录制视频时对 CameraConstrainedHighSpeedCaptureSession 中的预览进行实时、逐帧分析。该框架确保在 120 FPS 的视频录制会话期间保持一致的 30 FPS 预览帧速率。

我也尝试过 CameraX api,但它无法配置为 120FPS。因此,我使用 ConstrainedHighSpeed API。

我已经使用 ImageReader 来捕获预览帧,但它给出了不支持该表面的错误。

        mImageReader = ImageReader.newInstance(
            mVideoSize!!.width, mVideoSize!!.height,
            ImageFormat.YUV_420_888,  /*maxImages*/2
        )
        mImageReader!!.setOnImageAvailableListener(
            mOnImageAvailableListener, mBackgroundHandler
        )
        

为了实现这一点,我利用 AutoFitSurfaceView 进行预览。这个类的代码来自谷歌相机样本。

但是,我目前在从预览中捕获帧进行分析时遇到困难。

谢谢

java android kotlin analysis android-camera2
1个回答
0
投票
不幸的是,“受限高速捕获会话”被标记为“受限”是有充分理由的;这非常

不灵活: 应用程序通过 CameraDevice.createConstrainedHighSpeedCaptureSession(List, StateCallback, Handler) 创建一个不超过 2 个表面的相机捕获会话。目标表面必须是预览表面(来自 SurfaceView 或 SurfaceTexture)或记录表面(来自 MediaRecorder.getSurface() 或 MediaCodec.createInputSurface())。

因此,您也许可以通过 SurfaceTexture 在 GPU 上运行分析(或者从 GPU 进行读回,当然这会带来更多开销)。但 ImageReader 不太可能工作。

© www.soinside.com 2019 - 2024. All rights reserved.