Последствия для AVCapturePhotoВыход подготовленPhotoSettingsArray - PullRequest
0 голосов
/ 26 марта 2020

В AVFoundation класс AVCapturePhotoSettings позволяет разработчику настроить захват фотографии в соответствии с их потребностями.

Внутри AVCapturePhotoOutput разработчик имеет возможность вызвать метод setPreparedPhotoSettingsArray(_:completionHandler:), который установит настройки захвата для вывода фото заранее. Это делается для того, чтобы (из документации): «Предотвратить медленное выполнение запросов на захват фотографий из-за ленивого распределения ресурсов».

Другой метод установки параметров захвата - установка AVCapturePhotoSettings во время захвата. с помощью метода capturePhoto(with:delegate:) в AVCapturePhotoOutput.

Я хочу предварительно установить определенные параметры захвата, используя setPreparedPhotoSettingsArray(_:completionHandler:). Эти настройки являются конфигурациями, которые, я знаю, я определенно буду использовать.

У меня также есть определенные настройки захвата, которые можно переключать, и поэтому я не могу гарантировать, что буду использовать определенные конфигурации. Вместо этого я хотел бы установить эти настройки с помощью capturePhoto(with:delegate:) во время захвата. Я хочу знать, как я могу это сделать.

Читая документацию Apple, я понимаю, что вызов capturePhoto(with:delegate:) отменит предыдущий preparedPhotoSettingsArray, который я установил с setPreparedPhotoSettingsArray(_:completionHandler:). Я хотел бы добавить дополнительные спецификации / настройки к существующим preparedPhotoSettingsArray ad ho c, а не переопределять их.

1 Ответ

0 голосов
/ 28 марта 2020

Как я понял, setPreparedPhotoSettingsArray на самом деле не настройка настроек, которые будут использоваться при следующем захвате, а скорее подсказка системе, какие настройки вы (вероятно) собираетесь использовать используйте его, чтобы он мог заранее подготовить ресурсы и ускорить фактический захват.

Это означает, что вы всегда настраиваете AVCapturePhotoSettings для текущего захвата, независимо от того, что вы говорили системе ранее с setPreparedPhotoSettingsArray. Если текущие настройки отличаются от тех, которые вы подготовили, системе может потребоваться немного больше времени для этого перехвата, поскольку она должна сначала распределить ресурсы.

Я полагаю, что лучшей практикой будет вызов setPreparedPhotoSettingsArray, как только пользователь изменяет настройки захвата в интерфейсе, предполагая, что он / она занимает немного времени между изменением настроек и фактическим захватом, чтобы система могла подготовиться в течение этого времени.

...