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