Вопрос

Я использую фундамент 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top