2015-09-16 1 views
2

Мое приложение предоставляет камеру, которая позволяет пользователю делать снимок или записывать видео. У меня нет возможности узнать, какое действие пользователь собирается выбрать. Поэтому мне нужно предоставить предварительный просмотр камеры для обоих действий. С старым API-интерфейсом камеры не было никаких проблем, но я не уверен в API-интерфейсе Camera2.Как настроить предварительный просмотр камеры с помощью API камеры2 одновременно и для фото и видео?

Я тщательно просмотрел обоих примерах Google: Camera2Basic и Camera2Video, и я заметил, что для съемки предварительного просмотра строитель использует CameraDevice.TEMPLATE_PREVIEW:

mPreviewRequestBuilder = mCameraDevice.createCaptureRequesT(CameraDevice.TEMPLATE_PREVIEW); 

для записи видео он использует CameraDevice.TEMPLATE_RECORD;

mPreviewBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_RECORD); 

Я проверил описание для всех шаблонов в CameraDevice класса, но до сих пор не уверен, что это правильный путь, в моем случае. Я попытался установить TEMPLATE_PREVIEW для записи видео, и он работал нормально, но правильно ли я понимаю, что в этом случае качество видео может быть ниже? Причина в документах гласит следующее:

В частности, это означает, что высокая скорость передачи кадров имеет приоритет над высококачественной пост-обработкой.

+0

У вас есть решение? Я спросил об этом. Ссылка есть: http://stackoverflow.com/questions/36174807/how-to-programmatically-take-photos-while-recording-video-using-camera2-api-in-a Я застрял здесь. Если у вас есть идея, тогда помогите мне. –

+0

Здравствуйте, у меня такая же проблема. Я хочу, чтобы видео и изображение были в одном фрагменте. Можете ли вы, по возможности, поделиться кодом? –

ответ

0

Шаблоны имеют только значения по умолчанию для различных настроек CaptureRequest. Каждый шаблон предназначен для определенного использования.

Но для простоты, TEMPLATE_PREVIEW для предварительного просмотра перед началом записи должно быть хорошо; Я бы рекомендовал переключиться на TEMPLATE_RECORD во время записи. Затем вернитесь к TEMPLATE_PREVIEW, как только пользователь прекратит запись.

+0

Благодарим вас за ответ, но не изменили ли шаблоны на ходу беспорядок на самом деле? Я имею в виду, мне нужно отобразить предварительный просмотр в TextureView во время записи видео. – textfield1

+0

Шаблон просто устанавливает значения по умолчанию для запроса на захват. Просто убедитесь, что вы добавили правильные целевые поверхности, и все будет хорошо. –