AVCaptureSession пауза? - PullRequest
       22

AVCaptureSession пауза?

9 голосов
/ 02 сентября 2010

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

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

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

Ответы [ 3 ]

28 голосов
/ 15 апреля 2013

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

например,

<your_video_preview_layer>.connection.enabled = NO;

, чтобы он не использовал данные с устройства ввода.

Надеюсь, это то, что вы ищете.

1 голос
/ 30 декабря 2010

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

0 голосов
/ 17 мая 2013

Это то, что я сделал, чтобы пользовательский интерфейс не блокировал первые 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
...