2017-04-20 221 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范围内列出高帧速率的设备才支持更灵活的输出;截至今天,我不知道有任何这样的设备。高速录音非常符合当今手机功能的优势。