AVCaptureSession пауза?

Я использую AV Foundation для непрерывного захвата изображений после того, как Apple выпустила iOS 4.0, следуя кодам, предоставленным http://developer.apple.com/iphone/library/qa/qa2010/qa1702.html

Тем не менее, когда я вызываю "[session startRunning];" для предварительного просмотра камеры требуется около 1-2 секунд. Таким образом, это разочаровывает конечного пользователя, так как ему нужно подождать некоторое время.

Есть ли способ приостановить сеанс вместо его остановки, так как я могу инициировать сеанс при запуске программы и удерживать его в паузе, пока пользователь не перейдет к экрану камеры и не начнет запускать его там? Спасибо за любую помощь.

3 ответа

Решение

Нет возможности "приостановить" сеанс, но вы можете запустить сеанс захвата в любое время и просто оставить его запущенным. Если вы снимаете неподвижные изображения, просто вызовите captureStillImageAsynchronouslyFromConnection, когда будете готовы. Если вы снимаете видео, вы можете иметь метод captureOutput: didOutputSampleBuffer: fromConnection: в делегате, просто выбрасывая кадры, пока вы не захотите что-то с ними сделать. Вы можете даже начать сеанс захвата без устройства вывода, пока не будете готовы (еще не пробовали).

Вместо приостановки сеанса вы можете отключить входное соединение.

например

<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
Другие вопросы по тегам