AvcaptureSession Pause?
-
26-09-2019 - |
Вопрос
Я использую фундамент AV для захвата изображений непрерывно после выпущенного Apple IOS 4.0, следуя кодам, данным,http://developer.apple.com/iphone/library/qa/qa2010/qa1702.html.
Однако, когда я называю «сеанс StarTrunning];» Это займет около 1-2 секунд, чтобы начать предварительный просмотр камеры. Итак, это расстраивает конечный пользователь, как ему нужно ждать некоторое время.
Есть ли способ приостановить сеанс вместо того, чтобы остановить его, так как я могу инициировать сеанс в запуске программы и сохранить его паузу, пока пользователь не навигается на экран камеры и начните его там? Спасибо за любую помощь.
Решение
Нет никакого способа «пауза» сеанса, но вы можете запустить сеанс захвата в любое время и просто оставить его. Если вы захватываете неподвижные изображения, просто позвоните в CaptureStillimageasyNchroneFromConnection, когда вы будете готовы. Если вы захватите видео, вы можете иметь свой CaptureOutput: DIDOUTPUTSAMPLEBUFTER: fromcence: метод в делегате просто выбросить кадры, пока не захочешь что-то сделать с ними. Возможно, вы даже сможете запустить сеанс захвата без выходного устройства, пока вы не будете готовы (не пробовали это).
Другие советы
Вместо того, чтобы приостановить вашу сессию, вы предпочитаете отключить входное соединение.
например
<your_video_preview_layer>.connection.enabled = NO;
Так что это не потребляет данные из входного устройства.
Надеюсь, это то, что вы ищете.
Это то, что я сделал, чтобы предотвратить блокировку пользовательских интерфейсов на 1-2 секунды при вызове --startrunning.
1) Add UIActivityIndicator
2) Add observer to AVCaptureSession
3) call -startRunning in a background thread
4) Resume the UI in the notification callback