Android Camera2 getPreviewFrame

康斯坦丁·乔治

我正在尝试使相机框架处于预览模式。我正在从github https://github.com/googlesamples/android-Camera2Basic运行示例项目

我遇到的问题是使框架处于预览模式。

这是代码:

private CameraCaptureSession.CaptureCallback mCaptureCallback = new CameraCaptureSession.CaptureCallback() {

    private void process(CaptureResult result) {
        switch (mState) {
            case STATE_PREVIEW: {

                //HERE, HOW CAN I RETRIEVE THE CURRENT FRAME?

                break;
            }
            case STATE_WAITING_LOCK: {
               ...
                break;
            }
            case STATE_WAITING_PRECAPTURE: {
             ...
                break;
            }
            case STATE_WAITING_NON_PRECAPTURE: {
             ...
                break;
            }
        }
    }

我试图获取帧的另一件事是设置mImageReader.setOnImageAvailableListener。我期望能够获得onImageAvailable回调的帧,但是从不调用onImageAvailable。onPreviewFrame是我自己的方法,我需要将当前帧传递给它。

  mImageReader = ImageReader.newInstance(largest.getWidth(), largest.getHeight(), ImageFormat.JPEG, /*maxImages*/2);
  mImageReader.setOnImageAvailableListener(mOnImageAvailableListener, mBackgroundHandler);

  private final ImageReader.OnImageAvailableListener mOnImageAvailableListener  = new ImageReader.OnImageAvailableListener() {

    @Override
    public void onImageAvailable(ImageReader reader) {
        mTextureView.onPreviewFrame(reader.acquireNextImage().getPlanes([0].getBuffer().array());
    }

};

我做错了什么?谢谢。

rcsumner

OnImageAvailableListener.onImageAvailable回调永远不会被调用时的预览框可用,因为CaptureRequest它被送到了CameraCaptureSession.setRepeatingRequest()方法并没有列出ImageReaderSurface为输出目标。

Surface当您将请求发送到摄像机时,您可以确定每个捕获数据要到达的输出(本质上是原始字节缓冲区)。因此,要获取“预览框架”以触发onImageAvailable()回调,然后将其发送到您的onPreviewFrame()方法,只需添加以下行:

mPreviewRequestBuilder.addTarget(mImageReader.getSurface());

这条线可以走了,例如,这增加了其他类似的行之后SurfaceTextureSurface以相同的请求建设者。

请注意,这会将每个预览帧以及“捕获”按钮的“输出帧”发送给您的功能。您可能希望onImageAvailable()区分回调中的某些代码

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Android JavaCV + Camera2

来自分类Dev

Android Camera2示例

来自分类Dev

Android Camera2 API和EXIF

来自分类Dev

Android Camera2捕获歪斜的图像

来自分类Dev

Android Camera2预览被拉伸

来自分类Dev

Android Camera2参数展平

来自分类Dev

Android Camera2 空预览图像

来自分类Dev

使用Android camera2获得全屏预览

来自分类Dev

在Android的Camera2中手动对焦

来自分类Dev

Camera2 Android中的曝光补偿方法

来自分类Dev

Android Camera2 API手动曝光更改

来自分类Dev

如何使用Android Camera2 API捕获单个图像?

来自分类Dev

Android Camera2将TotalCaptureResult与Frame关联

来自分类Dev

Android 5,camera2仅使用闪光灯

来自分类Dev

Android Camera2 API聚焦距离校准

来自分类Dev

Android camera2捕获连拍太慢

来自分类Dev

Android Camera2 API-检测何时关注

来自分类Dev

Android Camera2手柄缩放

来自分类Dev

Android API 21+ Camera2 API

来自分类Dev

在Android Vision API中切换到Camera2

来自分类Dev

将ImageReader和SurfaceTexture与Android Camera2输出同步

来自分类Dev

Android Camera2连发请求列表

来自分类Dev

Android Camera2 API手动曝光更改

来自分类Dev

Android Camera2图像处理:什么是几何校正?

来自分类Dev

使用Android Camera2 API在后台捕获视频

来自分类Dev

实时查询Android Camera2的相机参数

来自分类Dev

如何在 Android Camera2 中不断拍照?

来自分类Dev

Android Camera2 API 中的等效 canDisableShutterSound 方法

来自分类Dev

Android Camera2无法启动活动自动录制视频