Обёртывание демоверсии AVCam с WWDC 2010 - PullRequest
0 голосов
/ 07 мая 2011

У меня есть три приложения для камер (которые делают фотоснимки) в магазине приложений, и я получил отзыв о том, что интерфейс UIImagePickerController очень медленный - и я не могу этого отрицать.Итак, чтобы улучшить производительность приложения, я начал экспериментировать с исходным кодом AVCam Demo из WWDC 2010.

Поскольку среда AVFoundation не взаимодействует с UI Kit, я успешно справился с переносомпосмотреть вокруг демо.Я могу успешно переключаться между контроллерами представления.Единственное, что я изменил, - это заменил кнопку «Запись» на кнопку «Выход» (для выхода в контроллер представления обтекания)

Модифицированное приложение отлично работает во время первого сеанса (обертка -> демо). Если я выхожудемонстрацию в оболочку, и вернитесь к демонстрации во второй раз, видеокадр в слое предварительного просмотра останавливается через секунду или две после.Само приложение не зависает - просто видео заморожено.На данный момент все кнопки пользовательского интерфейса активны.Но когда я нажимаю кнопку «Все еще» для захвата изображения, в предупреждении появляется следующая ошибка:

Операция не может быть завершена (ошибка AVFoundationErrorDomain - 11800.)

Это не может бытьдублируется в исходном демонстрационном коде - потому что вы не можете закрыть и снова открыть сеанс.Поэтому мне интересно, имеет ли это какое-либо отношение к тому, как я «выхожу» из сеанса в моем тесте.Вот действие «выход», которое я добавил в демонстрационный код:

- (IBAction)exit:(id)sender
{
    [[self captureManager] stopRecording];
    [self dismissModalViewControllerAnimated:YES];
}

Достаточно ли этого - или я что-то пропустил?

С уважением, Сэм.

1 Ответ

1 голос
/ 08 мая 2011

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

Попробуйте остановить и отпустить, как предложено в этом вопросе: Как правильно выпустить AVCaptureSession (принять решение большинством голосов)

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

Удачи!

Одед.

...