簡體   English   中英

如何使用Camera2 API獲取框架

[英]How to get the frame using camera2 api

我正在使用camera2 api獲取相機框架,這是我編寫的代碼

private void startPreview() {
    SurfaceTexture surfaceTexture = mTextureView.getSurfaceTexture();
    surfaceTexture.setDefaultBufferSize(mPreviewSize.getWidth(), mPreviewSize.getHeight());
    Surface previewSurface = new Surface(surfaceTexture);

    try {
        mCaptureRequestBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
        mCaptureRequestBuilder.addTarget(previewSurface);

        mCameraDevice.createCaptureSession(Arrays.asList(previewSurface),
                new CameraCaptureSession.StateCallback() {
                    @Override
                    public void onConfigured(@NonNull CameraCaptureSession session) {
                        try {
                            session.setRepeatingRequest(mCaptureRequestBuilder.build(),
                                    new CameraCaptureSession.CaptureCallback() {

                                        @Override
                                        public void onCaptureCompleted(CameraCaptureSession session, CaptureRequest request, TotalCaptureResult result) {
                                            super.onCaptureCompleted(session, request, result);
                                            Log.i("State preview", "process: frame");

                                        }
                                    }, mBackgoundThreadHandler);
                        } catch (CameraAccessException e) {
                            e.printStackTrace();
                        }
                    }

                    @Override
                    public void onConfigureFailed(@NonNull CameraCaptureSession session) {
                        Toast.makeText(getApplicationContext(),
                                "Unable to setup camera preview", Toast.LENGTH_SHORT).show();
                    }
                }, null);
    } catch (CameraAccessException e) {
        e.printStackTrace();
    }

}

我可以通過以下行看到框架日志:

session.setRepeatingRequest(mCaptureRequestBuilder.build(),
                                    new CameraCaptureSession.CaptureCallback() {

                                        @Override
                                        public void onCaptureCompleted(CameraCaptureSession session, CaptureRequest request, TotalCaptureResult result) {
                                            super.onCaptureCompleted(session, request, result);
                                            Log.i("State preview", "process: frame");

                                        }
                                    }, mBackgoundThreadHandler);

因此,如何通過此功能獲取框架。 我是Camera2 API的新手,所以有人可以幫助我。

您的代碼當前僅將相機預覽繪制到TextureView上; 如果您希望應用程序代碼可以讀取第二個輸出,則需要創建第二個輸出並將其提供給相機。

根據要執行的處理類型,您需要使用ImageReader進行Java級訪問,使用SurfaceTexture (用於OpenGL讀取)或分配 (用於RenderScript)。 從以上每一個中,您都可以將Surface包含在會話創建和創建捕獲請求中。

它們每個都有一個回調,當有新框架可用時將觸發該回調。 onCaptureCompleted僅提供捕獲元數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM