public static boolean hasHighSpeedVideoConfigs(Context context, String cameraId) {
try {
CameraManager cameraManager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE);
CameraCharacteristics characteristics = cameraManager.getCameraCharacteristics(cameraId);
HighSpeedVideoConfiguration[] highSpeedVideoConfigs = characteristics.get(
CameraCharacteristics.CONTROL_AVAILABLE_HIGH_SPEED_VIDEO_CONFIGURATIONS);
return highSpeedVideoConfigs != null && highSpeedVideoConfigs.length > 0;
} catch (Exception e) {
}
return false;
}CameraCharacteristics characteristics = manager.getCameraCharacteristics(cameraId); StreamConfigurationMap map = characteristics .get(SCALER_STREAM_CONFIGURATION_MAP); mVideoSize = chooseVideoSize(map.getHighSpeedVideoSizes()); mPreviewSize = mVideoSize;//这里需要保持previewSize 和videoSize一致
Range aeFps = new Range(120, 120); mPreviewBuilder.set(CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE, aeFps);
// Start a capture session
mCameraDevice.createConstrainedHighSpeedCaptureSession(surfaces, new CameraCaptureSession.StateCallback() {
@Override
public void onConfigured(@NonNull CameraCaptureSession cameraCaptureSession) {
......
}
@Override
public void onConfigureFailed(@NonNull CameraCaptureSession cameraCaptureSession) {
......
}
}, mBackgroundHandler);CaptureRequest request = mPreviewBuilder.build(); ListslowMoRequests = ((CameraConstrainedHighSpeedCaptureSession) mPreviewSession) .createHighSpeedRequestList(request); mPreviewSession.setRepeatingBurst(slowMoRequests, null, mBackgroundHandler);
mProfile = getProfile(); int bitRate = getHighSpeedVideoEncoderBitRate(mProfile, mProfile.videoFrameRate, VEDIO_HIGH_SPEED_FRAME_RATE); mMediaRecorder.setVideoEncodingBitRate(bitRate); mMediaRecorder.setVideoFrameRate(mProfile.videoFrameRate); mMediaRecorder.setCaptureRate(VEDIO_HIGH_SPEED_FRAME_RATE);
Process: com.xcbj.camera, PID: 21818 java.lang.IllegalArgumentException: Surface size 1440x1080 is not part of the high speed supported size list [1280x720, 720x480, 640x480, 1920x1080] at android.hardware.camera2.utils.SurfaceUtils.checkConstrainedHighSpeedSurfaces(SurfaceUtils.java:193) at android.hardware.camera2.impl.CameraDeviceImpl.createCaptureSessionInternal(CameraDeviceImpl.java:881) at android.hardware.camera2.impl.CameraDeviceImpl.createConstrainedHighSpeedCaptureSession(CameraDeviceImpl.java:627)
Process: com.xcbj.camera, PID: 27138 java.lang.IllegalArgumentException: Fps range [30, 30] in the request is not a supported high speed fps range [[120, 120], [240, 240], [480, 480], [30, 120], [30, 240], [30, 480]] at android.hardware.camera2.utils.SurfaceUtils.checkConstrainedHighSpeedSurfaces(SurfaceUtils.java:180) at android.hardware.camera2.impl.CameraConstrainedHighSpeedCaptureSessionImpl.createHighSpeedRequestList(CameraConstrainedHighSpeedCaptureSessionImpl.java:89)





