Ответ 1
Это то, что API позволяет. Я пробовал три подхода на iPhone 4, работающий на последней версии iOS, 4.2.1.
Во-первых, я попытался использовать один сеанс захвата с подключенными к ним видеоустройствами. Прикрепление второго устройства создает исключение:
Завершение приложения из-за неотображаемого исключение "NSInvalidArgumentException", причина: '* Несколько аудио/видео В настоящее время AVCaptureInputs поддерживается.
Во-вторых, я попытался настроить два разных сеанса, каждый из которых имеет только одну камеру и запускает их одновременно. Это заставило первую сессию сообщать о кадрах примерно секунду, но как только вторая начинает первые остановки по своему собственному желанию. Порядок, в котором вы отправляете "startRunning", диктует, какой из сеансов в конечном итоге удастся вытеснить другого.
Наконец, я попробовал простой подход пинг-понга. Поэтому я создаю две сессии, начинаю первый, и как только он сообщает кадр, остановите его и запустите второй. Затем остановите второй и начните первый, до бесконечности. К сожалению, задержка между запросом начала сеанса и получением первого кадра оставила меня примерно с одним кадром каждые две секунды.
Конечно, возможно, я ошибался в своем коде, но я склонен сказать, что это невозможно для текущего оборудования или ОС. Я подключу уведомления AVCaptureSession, чтобы узнать, есть ли у меня явная причина, по которой останавливается и обновляется эта запись.
Дополнения: моя программа получает только уведомления AVCaptureSessionDidStartRunningNotification, по одному от каждого сеанса захвата. Тот, который останавливается, не сообщает об ошибке, прерывании или другой остановке. Я также не могу найти проблему с моим кодом, например повторное использование объекта или очереди отправки, что может привести к этой проблеме.