Мне нужно ускорить захват API камеры2. Я попытался создать проект «android-Camera2Basic» из образцов Google. Для запроса захвата по умолчанию из примера:Android camera2 speed-up
if (null == activity || null == mCameraDevice) {
return;
}
// This is the CaptureRequest.Builder that we use to take a picture.
final CaptureRequest.Builder captureBuilder =
mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE);
captureBuilder.addTarget(mImageReader.getSurface());
// Use the same AE and AF modes as the preview.
captureBuilder.set(CaptureRequest.CONTROL_AF_MODE,
CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE);
captureBuilder.set(CaptureRequest.CONTROL_AE_MODE,
CaptureRequest.CONTROL_AE_MODE_ON_AUTO_FLASH);
// Orientation
int rotation = activity.getWindowManager().getDefaultDisplay().getRotation();
captureBuilder.set(CaptureRequest.JPEG_ORIENTATION, ORIENTATIONS.get(rotation));
CameraCaptureSession.CaptureCallback CaptureCallback
= new CameraCaptureSession.CaptureCallback() {
@Override
public void onCaptureCompleted(CameraCaptureSession session, CaptureRequest request,
TotalCaptureResult result) {
showToast("Saved: " + mFile);
unlockFocus();
}
};
mCaptureSession.stopRepeating();
mCaptureSession.capture(captureBuilder.build(), CaptureCallback, null);
Он принимает 200-300ms от отправки запроса
mCaptureSession.capture(captureBuilder.build(), CaptureCallback, null);
И получить результат в
onImageAvailable(ImageReader reader)
Можно ли сократить это время? Я попробовал установить различные параметры для запроса на захват, такие как TEMPLATE_ZERO_SHUTTER_LAG, NOISE_REDUCTION_MODE_OFF, EDGE_MODE_OFF и т. Д. Но это не имеет никакого эффекта. Если я попытаюсь захватить взрыв, тогда все изображения, кроме первого, будут проходить очень быстро, не более, чем в 30-40 мс. Как уменьшить время захвата для первого изображения?
Я уверен, что начальное время - это аппаратное ограничение, и вы не сможете уменьшить его. Это именно то, как долго требуется, чтобы запрос прошел через контроллер датчика, датчик захватил его, необработанные данные получили декодирование и результаты отправлены обратно в ваше приложение. – Budius
Я думаю. Но при всплеске кадров съемки захватываются очень быстро, кроме первого. Кроме того, я старался не останавливать предварительный захват, поэтому камера должна быть «горячей», и не нужно начинать все параметры. Но результат тот же. И я думаю, что опция ZERO_SHUTTER_LAG не может иметь одинаковых результатов. –
@MaximMetelskiy Как вы получили всплеск так быстро? Мои снимки разнесены на расстояние 200-300 мс даже при использовании captureBurst. Я могу просто задать новый вопрос, если хотите. – acheroncaptain