使用Camera2从PreviewHighSpeedCamera回调方法onCaptureCompleted()读取输入帧
我们正在尝试将摄像头预览设置为120fps以上,即使用Camera2 API的PreviewSessionHighSpeed,下面是代码片段
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 :(得分:0)
受约束的高速录制会话受到很大限制(因此名称);不支持应用程序访问高帧率数据 - 它只能发送到视频编码器。
预览也只有30fps,因此这里不能使用SurfaceTexture来获取高速数据。
只有在常规目标FPS范围内列出高帧率的设备才能支持更灵活的输出;截至今天,我还没有发现任何此类设备。如今,高速录音在移动电话功能方面处于领先地位。