2017-04-20 40 views
0

閱讀從onCaptureCompleted PreviewHighSpeedCamera回調方法輸入幀使用Camera2讀取輸入幀onCaptureCompleted()使用Camera2

我們正試圖設置相機預覽超過120fps的多()即PreviewSessionHighSpeed使用Camera2 API,下面是代碼片段

private void updatePreview() { 

    if (null == mCameraDevice) { 
     return; 
    } 

    try { 

     setUpCaptureRequestBuilder(mPreviewRequestBuilder); 
     HandlerThread thread = new HandlerThread("CameraPreview"); 
     thread.start(); 
     List<CaptureRequest> mPreviewBuilderBurst = mPreviewHighSpeedCamera.createHighSpeedRequestList(mPreviewRequestBuilder.build()); 

     mPreviewHighSpeedCamera.setRepeatingBurst(mPreviewBuilderBurst, new CameraCaptureSession.CaptureCallback(){ 
      @Override 
      public void onCaptureCompleted(CameraCaptureSession session, CaptureRequest request, TotalCaptureResult result) { 

       super.onCaptureCompleted(session, request, result); 

       // We want to read the captured image buffer here 
       // We tried to use ImageReader but highSpeedCameraSession doesnnot support ImageReader surface 
       // HighSpeedcameraSession only supports preview or recording surface 
      } 

     }, mBackgroundHandler); 

    } catch (Exception e) { 

     e.printStackTrace(); 

    } 
} 

我們可以設置相機預覽框架PreviewSessionHighSpeed,但不能OnCaptureComplete後得到幀緩衝()。

任何一個知道如何獲得OnCaptureCompete()後的幀緩衝區?

在此先感謝

回答

0

受約束的高速記錄會話是非常有限的(因此名稱);不支持應用程序訪問高幀率數據 - 它只能發送到視頻編碼器。

預覽也只有30fps,所以SurfaceTexture無法用於獲取高速數據。

只有在常規目標FPS範圍內列出高幀速率的設備才支持更靈活的輸出;截至今天,我不知道有任何這樣的設備。高速錄音非常符合當今手機功能的優勢。