У меня есть приложение, которое создает собственный предварительный просмотр перед фотосъемкой.Приложение должно выполнить некоторую обработку данных изображения и, следовательно, не может полагаться на AVCaptureVideoPreviewLayer.Начало работы с исходным потоком идет довольно хорошо, используя пример кода Apple.Проблема возникает, когда я пытаюсь переключиться на более качественное изображение, чтобы сделать снимок.В ответ на нажатие кнопки я пытаюсь перенастроить сеанс для фотографирования в полном разрешении.Я пробовал много вариантов, но вот мой последний пример (который все еще не работает):
- (void)sessionSetupForPhoto
{
[session beginConfiguration];
session.sessionPreset = AVCaptureSessionPresetPhoto;
AVCaptureStillImageOutput *output = [[[AVCaptureStillImageOutput alloc] init] autorelease];
for (AVCaptureOutput *output in [session outputs]) {
[session removeOutput:output];
}
if ([session canAddOutput:output]){
[session addOutput:output];
} else {
NSLog(@"Not able to add an AVCaptureStillImageOutput");
}
[session commitConfiguration];
}
Я последовательно получаю сообщение об ошибке сразу после строки commitConfiguration, которая выглядит следующим образом: (то есть дляскажем, я получаю уведомление AVCaptureSessionRuntimeErrorNotification, отправленное моему зарегистрированному наблюдателю)
Получена ошибка: NSConcreteNotification 0x19d870 {name = AVCaptureSessionRuntimeErrorNotification;объект =;userInfo = {AVCaptureSessionErrorKey = "Ошибка домена = AVFoundationErrorDomain Code = -11800 \" Операция не может быть завершена \ U2019.(Ошибка AVFoundationErrorDomain -11800.) \ "UserInfo = 0x19d810 {}";
Документация в XCode якобы предоставляет дополнительную информацию для номера ошибки (-11800), "AVErrorUnknown - причина ошибки:неизвестно. ";
Ранее я также пробовал вызывать stopRunning и startRunning, но больше не делал этого после просмотра сессии 409 WWDC, где это не рекомендуется.Когда я останавливался и запускался, я получал другое сообщение об ошибке -11819, которое соответствует «AVErrorMediaServicesWereReset - Операция не может быть завершена, поскольку службы мультимедиа стали недоступны», что намного лучше, чем просто «неизвестно», но не обязательнобольше полезно.
Он успешно добавляет AVCaptureStillImageOutput (т. Е. НЕ выдает сообщение журнала).
Я тестирую на iPhone 3g (w / 4.1) и iPhone 4.
Этот вызов происходит в главном потоке, где также произошла моя первоначальная настройка AVCaptureSession.
Как можно избежать ошибки?Как я могу переключиться на более высокое разрешение, чтобы сделать фотографию?
Спасибо!